Firefox中的跨域请求阻止错误

时间:2019-03-12 04:39:39

标签: javascript xmlhttprequest

我正在尝试从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'。

1 个答案:

答案 0 :(得分:-1)

该问题似乎是由于使用了广告拦截器造成的。