对于跨源OPTIONS请求,是飞行前OPTIONS请求后跟“常规”OPTIONS请求吗?

时间:2014-10-31 12:40:25

标签: ajax xmlhttprequest cors http-options-method

我试图在我的服务中实现正确的CORS逻辑。从查看所有可用的文档,我不清楚,在跨源OPTIONS请求的情况下,客户端是否会发送(1)飞行前的OPTIONS请求,如果预先允许的话 - 飞行反应,(2)a"常规" (非飞行前)OPTIONS请求。

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

或者我应该为飞行前请求执行CORS逻辑,并且如果允许来自原点的OPTIONS方法,则期望后续OPTIONS请求?

[指向权威参考的额外信用]

1 个答案:

答案 0 :(得分:3)

对于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