哪个服务器必须实现 CORS?



超级代理文档包含有关 CORS 的条目:

出于安全原因,浏览器将阻止跨源请求,除非服务器使用 CORS 标头选择加入。浏览器还将发出额外的 OPTIONS 请求,以检查服务器允许哪些 HTTP 标头和方法。阅读更多关于 CORS 的信息。

.withCredentials() 方法允许从源发送 cookie,但仅当 Access-Control-Allow-Origin 不是通配符 ("*") 并且 Access-Control-Allow-Credentials 为"true" 时。

但是,它没有解释哪个服务器需要实现 CORS。

(我认为)可以指两个服务器:

  • 将 HTML 和 JavaScript 发送到浏览器的 Web 服务器
  • 交付的 JavaScript 向其发出请求的 API/资源服务器

哪个服务器必须实现 CORS?

交付的JavaScript 向其发出请求的 API/资源服务器是需要启用 CORS 支持的服务器——假设该服务器在与发出请求的前端 JavaScript 代码的来源不同的源上运行。

将HTML和JavaScript发送到浏览器的服务器不需要启用CORS - 假设你的意思是服务器是发出请求的前端代码的来源。

Web 服务器不需要启用 CORS 的原因是,您不会向该服务器发出任何跨源请求。相反,它只是提供你的前端JavaScript代码。

但是,您的前端 JavaScript 代码向其发出请求的任何其他源的任何其他服务器都必须启用 CORS — 否则您的浏览器将阻止您的前端 JavaScript 代码访问其他服务器发送的任何响应的响应正文和响应标头。

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 有更多细节。

最新更新