跨域AJAX调用和Access-Control-Allow-Origin

时间:2012-05-04 23:37:23

标签: ajax csrf

我知道您不允许进行跨域Ajax调用,但为什么我可以对facebook(或Twitter或其他)oauth API进行跨域ajax调用?

这是否与以下内容有关?

"Access-Control-Allow-Origin: *"

允许所有访问都是这种不良做法吗?是否有更好的方法只允许您授权的人?

谢谢!

1 个答案:

答案 0 :(得分:2)

Access-Control-Allow-Origin response header fieldCross-Origin Resource Sharing的一部分,它允许在某些条件下使用XHR进行跨源请求,这些条件可以由发送请求的服务器控制。

在这种特殊情况下,Access-Control-Allow-Origin: *表示服务器允许来自任何来源的请求。这基本上意味着资源是公开可用的,并且不支持凭证。

但是,由于您希望限制仅授权用户的访问权限,因此您无法使用*。相反,您需要返回Origin标头字段值(请参阅section 6.1)。如果客户端已经拥有凭据但尚未请求资源,则还需要支持preflight requests协商客户端允许发送的信息。