使用jquery的CORS错误

我目前正在使用cloudapp API开发一个项目,我正在使用jquery。 这是我的代码:

$.ajax({ headers: { "Accept": "application/json"}, type: 'GET', url: 'http://cl.ly/2wr4', crossDomain: true, success: function(data, textStatus, request){ console.log(data); } }); 

当我运行这个时,我得到200 OK响应并在Firefox中出现此错误:

 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(跨源资源共享)是一种HTML5function,允许一个站点访问另一个站点的资源,尽管它们位于不同的域名下。

CORS的W3C规范实际上提供了一些响应头的简单示例,例如密钥头​​, Access-Control-Allow-Origin以及必须用于在Web服务器上启用CORS的其他头。

如果您正在寻找有关如何在各种常见Web服务器上设置CORS的特定信息,请查看启用CORS共享网站。 http://enable-cors.org/

根据您上面给出的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提供商。

要修复错误,您需要在服务器上启用CORS。 客户端期望看到发回的CORS头以允许该请求。 它甚至可能发送预检请求以确保标题存在。

您可以为命中服务器的一个,多个或所有域启用CORS服务器端。 根据服务器的类型,配置会有所不同。

有关详细信息,请参阅以下页面: http : //enable-cors.org/server.html

您已在上面的请求中启用了CORS请求,因此客户端应该全部设置。

这些新编码员的一个重要注意事项是, http: //enable-cors.org/server.html上的所有内容都假定您正在运行服务器。 如果你是新人,就像我最初一样,这些类型的答案都无济于事。

如果您刚刚在计算机,CodePen等上制作了一些代码,则无法对其进行配置。

服务器端和客户端脚本之间存在重要区别 – 您的jquery在客户端(即用户计算机/浏览器)上运行,因此没有在那里设置标头的事情。

当我设置自己的服务器和我自己的PHP文件(PHP是服务器端,因此它在服务器上处理而不是浏览器)时,我终于开始在这个问题上取得进展,并且能够开始提出请求就好了。

为那些被淹死在涉及"Header set Access-Control-Allow-Origin "*"答案的答案中的人添加这个。当我开始时,它真的让我感到沮丧。