javascript - 嵌入html测试url的脚本

标签 javascript html cross-domain

我有一个 html 文件(下面的示例),其中包含一个简单的 javascript 函数来检查 URL 是否存在。然而,它仅适用于某些现有的 URL(不是全部),并且它永远不适用于不存在的 URL——只是似乎不会产生任何结果。我不知道出了什么问题。

--tsf

<HTML><HEAD>
<script>
function Exists(url)
{
    var req = new XMLHttpRequest();
    req.open('HEAD',url,false);
    req.send();
    return req.status!=404;
}
</script>
</HEAD>
<BODY>
<script>
if (Exists('http://stackoverflow.com/')) {
    document.write('Exists');
} else {
    document.write('Does not exist');
}
</script>
</BODY></HTML>

最佳答案

您面临“Same Origin Policy ”问题。这个概念是为了保护您的网络浏览体验,以便您访问的页面(即不良 JavaScript)无法与未知服务器通信,例如他们不会侵犯您的隐私(无法窃取您的数据)。

解决问题的最简单方法:将逻辑移至服务器(PHP、Ruby、Java 等)。让您的服务器执行 HTTP 请求并检查您需要什么。然后使用 XMLHttpRequest() 询问运行相同域和端口的您的服务器,这样就不会出现任何问题。仅此而已。

关于javascript - 嵌入html测试url的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126809/

相关文章:

javascript - 如何将点转换为像素以正确缩放

Javascript 在谷歌、火狐中工作,但在 IE9 中不工作

html - 媒体打印 CSS

javascript - 您可以通过其他域上的脚本使用跨域 Ajax 吗?

Javascript不会从django进行跨域请求

javascript - 在插入 mysql 之前如何验证字符串?

javascript - 添加字符串以使用 JQuery 内联 CSS?

javascript - ( NodeJS ) Http 服务器不从文件夹加载 JS/CSS 文件

javascript - 在 Angular 7 的 ngFor 中有条件地禁用按钮

.htaccess - 谷歌分析多个域别名