我知道您不允许进行跨域Ajax调用,但为什么我可以对facebook(或Twitter或其他)oauth API进行跨域ajax调用?
这是否与以下内容有关?
"Access-Control-Allow-Origin: *"
允许所有访问都是这种不良做法吗?是否有更好的方法只允许您授权的人?
谢谢!
答案 0 :(得分:2)
Access-Control-Allow-Origin response header field是Cross-Origin Resource Sharing的一部分,它允许在某些条件下使用XHR进行跨源请求,这些条件可以由发送请求的服务器控制。
在这种特殊情况下,Access-Control-Allow-Origin: *
表示服务器允许来自任何来源的请求。这基本上意味着资源是公开可用的,并且不支持凭证。
但是,由于您希望限制仅授权用户的访问权限,因此您无法使用*
。相反,您需要返回Origin
标头字段值(请参阅section 6.1)。如果客户端已经拥有凭据但尚未请求资源,则还需要支持preflight requests协商客户端允许发送的信息。