Javascript jquery中的CORS错误
我目前正在使用jquery进行一个项目。 这是我的密码:Javascript jquery中的CORS错误,javascript,jquery,ajax,cors,Javascript,Jquery,Ajax,Cors,我目前正在使用jquery进行一个项目。 这是我的密码: $.ajax({ headers: { "Accept": "application/json"}, type: 'GET', url: 'http://cl.ly/2wr4', crossDomain: true, success: function(data, textStatus, request){
$.ajax({
headers: { "Accept": "application/json"},
type: 'GET',
url: 'http://cl.ly/2wr4',
crossDomain: true,
success: function(data, textStatus, request){
console.log(data);
}
});
当我运行此命令时,Firefox中会出现200 OK响应和此错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://cl.ly/2wr4. This can be fixed by moving the resource to the same domain or enabling CORS.
Google Chrome中的这个错误:
XMLHttpRequest cannot load http://cl.ly/2wr4. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
控制台上没有任何记录。
请问我如何修复此错误
谢谢 要修复错误,需要在服务器上启用CORS。客户端希望看到返回的CORS头以允许请求。它甚至可能发送一个飞行前请求,以确保标头在那里 您可以为服务器上的一个、多个或所有域启用CORS服务器端。根据服务器的类型,配置会有所不同 有关更多信息,请参阅下页: 您已经在上面的请求中启用了CORS请求,所以客户端应该已经设置好了 CORS(跨源资源共享)是HTML5的一项功能,允许一个站点访问另一个站点的资源,尽管其域名不同 W3C CORS规范实际上很好地提供了一些响应头的简单示例,例如键头、
accesscontrolalloworigin
,以及在web服务器上启用CORS时必须使用的其他头
如果您想了解有关如何在各种常见web服务器上设置CORS的具体信息,请访问Enable CORS共享网站
根据上面给出的URL,我认为您在该服务器上没有控制权。因此,它根本不起作用
即使您已启用crossDomain:true,服务器也应返回您所需的标头,例如:
这是一个有效的服务器响应;CORS特定标题以粗体显示
HTTP响应:
Access-Control-Allow-Origin: http://xyzcom
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: FooBar
Content-Type: text/html; charset=utf-8
您可以尝试的一件事是:
$.ajax({
headers: { "Accept": "application/json"},
type: 'GET',
url: 'http://cl.ly/2wr4',
crossDomain: true,
beforeSend: function(xhr){
xhr.withCredentials = true;
},
success: function(data, textStatus, request){
console.log(data);
}
});
否则,您需要联系API提供商。对于那些较新的编码人员来说,一个重要的注意事项是,上面的所有内容都假设您有一台正在运行的服务器。如果你是新来的,就像我最初一样,这些类型的答案没有帮助 如果您刚刚在计算机、CodePen等上编写了一些代码,则无法进行配置 服务器端脚本和客户端脚本之间有一个重要的区别——jquery是在客户端(即用户计算机/浏览器)上运行的,因此不需要在客户端设置头 当我设置自己的服务器和自己的PHP文件(PHP是服务器端的,因此它是在服务器上处理的,而不是在浏览器上)时,我终于开始在这个问题上取得进展,并且能够开始发出请求
为那些被包含
“Header set Access Control Allow Origin”*“
答案的答案淹没的人添加此选项。当我开始时,这也让我非常沮丧。为了消除cors错误,您需要修改jQuery min文件
看看这个问题:您需要添加Access Control Allow Origin header。最好使用像PHP的cURL这样的服务器端库。这里可以对服务器端页面进行ajax调用,该页面具有这样的库,可以调用并获取结果。我尝试将Credentials设置为true,但得到了相同的错误。嗨,我做了更多的挖掘此外,cloudapp的API似乎不支持直接从浏览器发送请求。这些库都用于在服务器端发送请求,这不会触发跨域错误。您可能需要从服务器而不是客户端发送请求。