首页 > 解决方案 > 如何避免跨域请求被阻止?

问题描述

我正在尝试在运行 php 的服务器上检索文件。网络托管服务。

我以前遇到过这个问题,尝试从本地或服务器访问 html 文件。我的代码是:

<! DOCTYPE html >

<html>
   <head>
       <title>retrieve_activities_json.html</title>
   </head>
   <body>
   
       <p id="demo"></p>
       
       <script>
       var xmlhttp = new XMLHttpRequest();
       xmlhttp.onreadystatechange = function() {
           if( this.readystate == 4 && this.status == 200 ) {
               var activities_obj = JSON.parse(this.responseText);
               document.getElementById('demo').innerHTML = activities_obj[0];
           }
   
       };
   
       xmlhttp.open("GET","activities.json", true);
       xmlhttp.send();
       
       </script>
   </body>

</html>

我的浏览器或虚拟主机服务器是否有任何设置可以帮助我消除此错误消息:

从源“null”访问“file:///D:/Web%20Development%20Tutorials/JavaScript%20Practice/activities.json”的 XMLHttpRequest 已被 CORS 策略阻止:跨源请求仅支持协议方案:http , 数据, chrome, chrome-extension, chrome-untrusted, https.

标签: javascriptajax

解决方案


看到Origin 'null'意味着您正在尝试从本地计算机动态加载文件。Chrome 告诉您的同源策略(CORS)不允许这样做。Chrome 对这条规则特别严格。

虽然有办法绕过它,但我真的不推荐它。

您最好的选择是建立一个免费的本地 Web 服务器并从那里运行您的测试代码。


推荐阅读