我们应该在发送回复时关闭飞行前Cors请求的连接吗?

时间:2016-05-26 13:29:36

标签: ajax http-headers cors preflight

据我所知,如果cors请求附带一些额外的头文件集,第一台服务器需要处理它。

使用CORS,服务器必须发送Access-Control-Allow-Headers标头以允许来自客户端的不常见请求标头。

Access-Control-Allow-Headers ... - 支持的请求标头的逗号分隔列表。

例如假设我的飞行前请求是

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...

然后从服务器端我将发送回复

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

我的问题是 - 在我们向客户发送飞行前响应时,我应该关闭服务器端的连接吗?

还有一件事我如何缓存所有其他不同后续请求的飞行前请求?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用

缓存OPTIONS请求
  

访问控制 - 最大值 - 年龄

头。 将其附加到OPTIONS响应的标题集合中。

但是,必须由用户代理(浏览器)进行初始OPTIONS请求,您无法避免这种情况。 但是所有进一步的OPTIONS请求都被缓存而不是发布到服务器。 无需关闭连接。

  

Access-Control-Allow-Origin:http://hello-world.example

     

Access-Control-Max-Age:3628800

     

访问控制 - 允许 - 方法:PUT

解释here,搜索

  

可以指定以下标题

转到指定的文字部分。