我们应该在发送响应时关闭 pre-flight Cors 请求的连接吗?
should we close the connection of a pre-flight Cors request while sending response?
据我所知,如果 cors 请求带有一些额外的 headers 设置,第一个服务器需要处理它。
对于 CORS,服务器必须发送 Access-Control-Allow-Headers header 以允许来自客户端的不常见请求 header。
Access-Control-Allow-Headers ... - Comma-delimited 支持的请求列表 headers.
例如,假设我的 pre-flight 请求是
OPTIONS /cors HTTP/1.1
Origin: http://api.bob.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...
然后从server-side我会发送回复
Access-Control-Allow-Origin: http://api.bob.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Content-Type: text/html; charset=utf-8
我的问题是 -
当我们向客户端发送 pre-flight 响应时,我应该关闭服务器端的连接吗?
还有一件事,我如何为所有其他不同的后续请求缓存 pre-flight 请求?
谢谢
您可以使用
缓存 OPTIONS 请求
Access-Control-Max-Age
header。
将其附加到 OPTIONS 响应的 headers collection。
但是用户代理(浏览器)必须发出初始 OPTIONS 请求,您无法避免这种情况。
但是所有进一步的 OPTIONS 请求都被缓存并且不会发送到服务器。
无需关闭连接。
Access-Control-Allow-Origin: http://hello-world.example
Access-Control-Max-Age: 3628800
Access-Control-Allow-Methods: PUT
如 here 所述,搜索
could have the following headers specified
转到指定的文本部分。
据我所知,如果 cors 请求带有一些额外的 headers 设置,第一个服务器需要处理它。
对于 CORS,服务器必须发送 Access-Control-Allow-Headers header 以允许来自客户端的不常见请求 header。
Access-Control-Allow-Headers ... - Comma-delimited 支持的请求列表 headers.
例如,假设我的 pre-flight 请求是
OPTIONS /cors HTTP/1.1
Origin: http://api.bob.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...
然后从server-side我会发送回复
Access-Control-Allow-Origin: http://api.bob.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Content-Type: text/html; charset=utf-8
我的问题是 - 当我们向客户端发送 pre-flight 响应时,我应该关闭服务器端的连接吗?
还有一件事,我如何为所有其他不同的后续请求缓存 pre-flight 请求?
谢谢
您可以使用
缓存 OPTIONS 请求Access-Control-Max-Age
header。 将其附加到 OPTIONS 响应的 headers collection。
但是用户代理(浏览器)必须发出初始 OPTIONS 请求,您无法避免这种情况。 但是所有进一步的 OPTIONS 请求都被缓存并且不会发送到服务器。 无需关闭连接。
Access-Control-Allow-Origin: http://hello-world.example
Access-Control-Max-Age: 3628800
Access-Control-Allow-Methods: PUT
如 here 所述,搜索
could have the following headers specified
转到指定的文本部分。