在不禁用Chrome安全性的情况下修复CORS错误

时间:2019-09-16 11:16:53

标签: javascript google-chrome cors

我有一个javascript代码,使用ajax请求从某些json_url加载json数据,在chrome中运行html时出现以下错误

 Access to XMLHttpRequest at json_url from origin 'http://localhost:8000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

要解决此错误,我通过以下命令禁用网络安全性来打开chrome google-chrome --disable-web-security --user-data-dir="/tmp/chrome_dev_test"

总有办法解决此错误,以便我可以在chrome上运行html而不每次都禁用网络安全性吗?

使用的前端代码:

function getJSON(url){
    $.ajax({
        type:'GET',
        url:url,
        dataType:'json',
        contentType:'application/json', 
        timeout: 3000,
        success:function(data){
            //do something with data
        }
   });
}

1 个答案:

答案 0 :(得分:2)

您需要在服务器端启用CORS。这是许多服务器的指南,请使用适合您的服务器。

  

https://enable-cors.org/server.html

在客户端代码中,当您指定请求时,请添加它是CORS请求。例如:

$.ajax({
    url: "http://www.someotherdomain.com",
        type: "POST",
        crossDomain: true, //<-- this right here
        data: JSON.stringify(somejson),
        dataType: "json",
        success: function (response) {
            // ...
        },
        error: function (xhr, status) {
            // ...
        }
    });