跨域资源共享 - 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的主要内容,如果未能解决你的问题,请参考以下文章