if - modified - since标头使CORS OPTIONS请求失败

If-Modied-Since header makes CORS OPTIONS request fail

本文关键字:CORS OPTIONS 失败 请求 modified since if      更新时间:2023-09-26

在下面的代码自定义头(If-Modified-Since)使ajax失败状态HTTP/1.1 405 Not AllowedOPTIONS预飞行请求。但是,如果我删除标头,请求工作得像预期的那样好(我不确定OPTIONS是否根本没有发送或开发控制台只是不显示它)。为什么会这样呢?(与googleapi托管的jquery相同)。

http = new XMLHttpRequest();
http.open('GET', 'http://code.jquery.com/jquery-2.1.4.min.js');
http.setRequestHeader('If-Modified-Since', 'Sat, 29 Oct 1994 19:43:31 GMT')
http.send();

另外,是否有一种方法来发送这个标题在xhr jquery cdn能够得到304响应状态?

听起来像是Web服务器在说它不允许OPTIONS动词(方法)。为了确认,检查响应是否包含Allow标头(根据HTTP规范,它应该),如果是,它包含什么。如果不包含OPTION -例如:,如果只有Allow: GET, HEAD, PUT,那么OPTIONS请求将总是失败。因此,如果你想做的事情依赖于使用OPTIONS,它将无法在该服务器上工作。

根据CORS规范中的要求,设置If-Modified-Since报头(或除Accept, Accept- language, Content-Language或少数Content-Type情况外的任何其他报头)会导致客户端被要求进行预飞行;做飞行前需要使用OPTIONS方法。但是CORS规范和其他规范都不要求所有Web服务器必须支持OPTIONS方法;而在Web服务器不这样做的情况下,我想你会得到你在这里看到的那种响应。