我正在尝试从JavaScript中的http://ip-api.com/json获取用户的邮政编码。网站发送给客户的标题包括以下行:
Access-Control-Allow-Origin: *
我假设以上一行表示服务器启用了跨域资源共享(CORS)。但是,当我运行以下代码片段时,我在Firefox中收到一条错误消息。
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function HttpRequestJson() {
const http_url = "http://ip-api.com/json";
const xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", http_url, false); // false => synchronous
xmlhttp.overrideMimeType("text/json");
xmlhttp.send();
const jsonObj = JSON.parse(xmlhttp.responseText);
console.log(jsonObj.zip);
return jsonObj.zip;
}
</script>
</head>
<body>
<script>
alert(HttpRequestJson());
</script>
</body>
</html>
Firefox返回的错误消息是:
跨域请求被阻止:“同源起源”策略禁止读取http://ip-api.com/json处的远程资源。 (原因:CORS请求未成功)。[了解更多]
奇怪的问题是我一直都没有收到错误消息。换句话说,有时我得到正确的邮政编码,有时我得到上述错误。通常,当我第一次打开Firefox时,在重新加载页面时会返回错误。
哪些问题可能导致上述错误?
P.S。我想使这个请求同步。但是,异步请求会导致相同的错误。
更新1
我在Chrome中有一个类似的问题。第一次加载该页面时,将返回邮政编码,但是下次出现以下错误:
无法加载资源:net :: ERR_BLOCKED_BY_CLIENT
未捕获的DOMException:无法在'XMLHttpRequest'上执行'send':无法加载'http://ip-api.com/json'。
答案 0 :(得分:-1)
该问题似乎是由于使用了广告拦截器造成的。