哪个服务器需要返回Access-Control-Allow-Origin报头

Which server needs to return Access-Control-Allow-Origin header?

本文关键字:返回 Access-Control-Allow-Origin 报头 服务器      更新时间:2023-09-26

假设我有一个HTML页面,从example.com提供。它向targetServer.com发出一个javascript ajax请求

哪个服务器需要返回Access-Control-Allow-Origin="(某物)"?

是targetServer还是提供原始HTML页面(即example.com)的服务器?

[我知道这可能是显而易见的,但是web上的文档似乎暗示targetServer必须发送和"example.com"的allow-origin头,但如果这是一个安全功能,恶意的targetServer.com不总是提供一个合适的allow-origin头吗?example.com会给浏览器提供一个服务器列表这是有道理的除了example.com之外它还可以调用]

目标服务器需要设置Access-Control-Allow-Origin标头。

CORS旨在保护服务器免受意外的跨域请求。在CORS出现之前,服务器是通过浏览器的同源策略来防止跨域请求的。如果自动允许所有服务器使用CORS,那么这种同源契约将被破坏,服务器将接收到意想不到的请求。为了防止这种情况,CORS规范的作者让服务器负责规定允许哪些类型的跨域请求。

服务器不仅可以使用Access-Control-Allow-Origin头,还可以使用Access-Control-Allow-Credentials, Access-Control-Allow-Methods, Access-Control-Allow-HeadersAccess-Control-Expose-Headers头。这些不同的标头为服务器提供了对配置CORS行为的细粒度控制。

所以在你的例子中,恶意服务器可以设置这些标头,但标头不会自己做任何事情。客户机需要有意识地做出决定,以便向恶意服务器发送请求。实际上,客户机本身需要是恶意的。

你误解了安全问题。

CORS的目的是防止其他网站的Javascript从你的网站读取敏感信息。

因此,你的网站必须明确说明哪些来源可以读取它的数据