跨域资源共享 - CORS

Posted

技术标签:

【中文标题】跨域资源共享 - CORS【英文标题】:Cross Origin Resource Sharing - CORS 【发布时间】:2013-01-12 00:04:20 【问题描述】:

尝试从一台服务器到另一台服务器进行跨源调用。不能让它工作。 因此,使用适用于此示例的代码制作了一个测试页面 http://arunranga.com/examples/access-control/preflightInvocation.html

这是我的示例页面,代码相同: http://webcosmo.com/test.html

但是我收到 403 禁止错误。

有人吗?

【问题讨论】:

您使用哪个浏览器进行测试? IE 我没有看过你的代码,但是你有没有使用任何特殊的标题?您可能需要提供(例如,对于 Authorization 标头)Access-Control-Request-Headers: Authorization CORS 标头,以允许客户端发送非标准标头。 【参考方案1】:

您的资源缺少 Access-Control-Allow-Origin 标头。因此 CORS 无法使用它。尝试将此添加到您的响应标头中:

Access-Control-Allow-Origin: *

Read this 了解有关Access-Control-Allow-Origin 标头的更多信息。

【讨论】:

谢谢。我错过了那个。我需要将响应标头 Access-Control-Allow-Origin 设置为 * 或允许从服务器返回域。 FWIW,然后在验证它与*一起工作后,为了安全起见,将*替换为允许访问资源的域!例如***.com/a/16267287/199364【参考方案2】:

如果您添加Access-Control-Allow-Origin: *,那么您的指令withCredentials 将不起作用。 最佳实践是从请求中添加直接来源。 在 php 中你可以使用$_SERVER['HTTP_ORIGIN'];

附言 您还可以将来源与您信任的域进行比较并提供有限的访问权限。

【讨论】:

以上是关于跨域资源共享 - CORS的主要内容,如果未能解决你的问题,请参考以下文章

跨域资源共享CORS

跨域资源共享 (CORS) 概念

跨域资源共享 (CORS) 问题

跨域资源共享CORS详解

跨域资源共享CORS详解

跨域资源共享 CORS 详解