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

标签 ajax csrf

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

这与以下内容有关系吗?

"Access-Control-Allow-Origin: *"

允许所有访问是一种不好的做法吗?有没有更好的方法只允许您授权的人?

谢谢!

最佳答案

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

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

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

关于ajax - 跨域AJAX调用和Access-Control-Allow-Origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457430/

相关文章:

javascript - $.ajax() 没有在 mozilla firefox 中向服务器端触发请求

php - 是否有可能在 PHP 中使用 file_get_contents 破坏 CSRF token 验证

java - 如何在 SAST Checkmarx 之后解决 API Controller 中的 XSRF 跨站请求伪造 (CSRF)

spring - 使用 Grails Spring Security 进行 CSRF 保护

django - 关于 Django 的 CSRF 保护问题

security - 服务器端是否需要生成anti-XSRF/CSRF token?

ajax - 多个异步 jQuery AJAX POST 同时返回

javascript - 动态链接和 Ajax

ajax - 通过 ajax 加载二进制 WebGL 模型的最佳方法?

javascript - 如何在某个表获取新行时刷新页面(PHP)?