【问题标题】:For a cross-origin OPTIONS request, is the pre-flight OPTIONS request followed by a "regular" OPTIONS request?对于跨域 OPTIONS 请求,飞行前 OPTIONS 请求是否后跟“常规” OPTIONS 请求?
【发布时间】:2014-12-27 18:58:09
【问题描述】:

我正在尝试在我的服务中实现正确的 CORS 逻辑。通过查看所有可用文档,我不清楚在跨域 OPTIONS 请求的情况下,客户端是否会发送 (1) 飞行前 OPTIONS 请求,并且如果飞行前响应允许, (2) 一个“常规”(非飞行前)OPTIONS 请求。

换句话说,在我的服务器中,当我收到飞行前的 OPTIONS 请求时,我是否应该同时执行 CORS 逻辑和正常的 OPTIONS 请求处理逻辑,填充正常的 OPTIONS 响应标头以及Access-Control-* 响应标头?

或者我应该只为飞行前请求执行 CORS 逻辑,如果源允许使用 OPTIONS 方法,则期待后续的 OPTIONS 请求?

[指向权威参考的额外功劳]

【问题讨论】:

    标签: ajax xmlhttprequest cors http-options-method


    【解决方案1】:

    如果是 OPTIONS 请求,您将收到一个预检 OPTIONS 请求,然后是实际的 OPTIONS 请求。可以识别预检 OPTIONS 请求,因为它将具有:1) 一个 OPTIONS HTTP 方法,2) 一个 Origin 标头,以及 3) 一个 Access-Control-Request-Method 标头。实际的 OPTIONS 请求将只有:1) 一个 OPTIONS HTTP 方法,以及 2) 一个 Origin 标头。实际的 OPTIONS 请求不会有 Access-Control-Request-Method 标头。

    下面是一个示例:http://client.cors-api.appspot.com/client#?client_method=OPTIONS&client_credentials=false&server_enable=true&server_status=200&server_credentials=false&server_methods=OPTIONS&server_tabs=local

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 2016-06-26
      • 1970-01-01
      • 2012-08-20
      • 2018-06-18
      相关资源
      最近更新 更多