如何使用JavaScript检查URL是否可用

4

我想使用jQuery来检查URL是否可用。我正在使用以下JavaScript代码来验证,但它仅适用于HTTP URL。如果URL是HTTPS,则失败并显示错误alert

var backendUrl = "https://myserver:8081/app/test.jsp";
$.ajax({
    type: "GET",
    url: backendUrl
}).done(function (result) {
    console.log("working");
    window.location.href = backendUrl;
}).fail(function () {
    alert(Sorry URL is not access able");
});

有人能告诉我一个检查URL是否可用的原因和更精确的方法吗?使用JavaScript。


使用相对路径。在进行AJAX请求时,接收域必须与请求域完全匹配 - 包括端口号。您可以在发出请求后检查控制台以确认失败的确切原因。 - Rory McCrossan
很可能是安全问题,请查看控制台。我有一种感觉,你没有为myserver:8081获得有效的SSL证书。 - Keith
没有任何 https URL 可以从浏览器中打开。 - user526206
假设您的URL与您所在的页面不在同一域/端口上,您可能需要从Web服务器而不是浏览器中执行此操作-因此这将取决于您的Web应用程序使用的服务器技术。 - Joe Enos
2个回答

9

这是我用来检查URL是否存在的方法:

function UrlExists(url, cb) {
    jQuery.ajax({
        url: url,
        dataType: 'text',
        type: 'GET',
        complete: function (xhr) {
            if (typeof cb === 'function')
                cb.apply(this, [xhr.status]);
        }
    });
}

UrlExists('-- Insert Url Here --', function (status) {
    if (status === 200) {
        // Execute code if successful
    } else if (status === 404) {
        // Execute code if not successful
    } else {
        // Execute code if status doesn't match above
    }
});

有许多状态码,因此您可以将404更改为任何想要匹配的代码,或者只需在最后一个else情况下放置要执行的代码即可,如果状态不符合所请求的任何状态代码,则该代码将被执行。


如果状态码既不是200也不是404,你会返回什么?我认为你可以使用else来处理所有其他情况。 - blurfus
是的,这只是一个例子。处理部分可以根据您的具体需求进行编辑。 - Action Coding
对我和你来说很明显,但其他人可能不是这样(不过,我认为它应该能处理其他状态码)。 - blurfus
1
我编辑了它,包括else和描述。 - Action Coding

1

你不能只使用相对路径吗?

例如,app/test.jsp - https://myserver:8081/app/test.jsp

            var backendUrl = "app/test.jsp";
            $.ajax({
                type: "GET",
                url: backendUrl
            }).done(function (result) {
                console.log("working");
                window.location.href = backendUrl;
            }).fail(function () {
                alert("Sorry URL is not access able");
             });

如果您在本地环境下运行,则不太可能安装SSL。

没有SSL问题,因为我可以从浏览器中打开此URL。我的要求是URL应该像这样带有端口,所以我不能使用相对路径。 - user526206

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接