共计 1049 个字符,预计需要花费 3 分钟才能阅读完成。
CORS(跨域资源共享)是一个零碎,由传输 HTTP 标头组成,用于确定浏览器是否阻止前端 JavaScript 代码拜访跨域申请的响应。
同源安全策略禁止跨域拜访资源。然而 CORS 使 Web 服务器可能示意他们心愿抉择容许跨域拜访其资源。
Access-Control-Allow-Methods
指定在拜访资源以响应预检申请时容许的一种或多种办法。下面的例子为 POST.
Access-Control-Allow-Headers
用于响应预检申请,以批示在收回理论申请时能够应用哪些 HTTP 标头。下面的例子为 content-type.
CORS 预检申请 (preflight) 是一个 CORS 申请,用于查看 CORS 协定是否被了解以及服务器是否应用特定的办法和标头晓得。
这是一个 OPTIONS 申请,应用三个 HTTP 申请标头:Access-Control-Request-Method、Access-Control-Request-Headers 和 Origin 标头。
预检申请由浏览器主动收回,在失常状况下,前端开发人员不须要本人制作此类申请。它呈现在申请被限定为“预检”并且对于简略申请被省略时。
例如,在发送 DELETE 申请之前,客户端可能会通过应用预检申请询问服务器是否容许 DELETE 申请:
OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org
如果服务器容许,那么它将应用 Access-Control-Allow-Methods 响应标头响应预检申请,其中列出了 DELETE:
HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400
能够抉择应用 Access-Control-Max-Age 标头为在同一 URL 中创立的申请缓存预检响应,如上例所示。为了缓存预检响应,浏览器应用与浏览器治理的通用 HTTP 缓存不同的特定缓存。预检响应永远不会缓存在浏览器的通用 HTTP 缓存中。
对于上图 Spartacus 零碎的例子,服务器容许跨域拜访: