我有一个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
}
});
}
答案 0 :(得分:2)
您需要在服务器端启用CORS。这是许多服务器的指南,请使用适合您的服务器。
在客户端代码中,当您指定请求时,请添加它是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) {
// ...
}
});