【发布时间】:2012-05-06 19:16:49
【问题描述】:
我了解您不允许进行跨域 Ajax 调用,但为什么我可以对 facebook(或 twitter 或其他)的 oauth API 进行跨域 ajax 调用?
这是否与以下有关?
"Access-Control-Allow-Origin: *"
是否允许所有访问都像这种不好的做法?有没有更好的方法只允许您授权的人?
谢谢!
【问题讨论】:
我了解您不允许进行跨域 Ajax 调用,但为什么我可以对 facebook(或 twitter 或其他)的 oauth API 进行跨域 ajax 调用?
这是否与以下有关?
"Access-Control-Allow-Origin: *"
是否允许所有访问都像这种不好的做法?有没有更好的方法只允许您授权的人?
谢谢!
【问题讨论】:
Access-Control-Allow-Origin response header field 是Cross-Origin Resource Sharing 的一部分,它允许在某些条件下使用 XHR 进行跨域请求,这些条件可以由请求发送到的服务器控制。
在这种特殊情况下,Access-Control-Allow-Origin: * 表示服务器允许来自任何来源的请求。这基本上意味着该资源是公开可用的并且不支持凭据。
但由于您希望将访问权限限制为仅授权用户,您不能使用*。相反,您需要返回Origin 标头字段值(请参阅section 6.1)。如果客户端已经拥有凭据但尚未请求资源,您还需要支持preflight requests 协商允许客户端发送哪些信息。
【讨论】: