Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器未发送POST请求的CORS HTTP选项_Javascript_Ajax_Post_Cors_Http Options Method - Fatal编程技术网

Javascript 浏览器未发送POST请求的CORS HTTP选项

Javascript 浏览器未发送POST请求的CORS HTTP选项,javascript,ajax,post,cors,http-options-method,Javascript,Ajax,Post,Cors,Http Options Method,jQuery应该发送一个HTTP选项请求来启动飞行前CORS,但它总是发送一个HTTP POST。由于这是一个POST,浏览器无法获得访问控制允许来源或访问控制允许方法,浏览器别无选择,只能404响应 jQuery.ajax('https://domain.com/path', { crossDomain: true, data: postData, error: function(jqXHR, status, errorThrown) { //whatever },

jQuery应该发送一个HTTP选项请求来启动飞行前CORS,但它总是发送一个HTTP POST。由于这是一个POST,浏览器无法获得访问控制允许来源或访问控制允许方法,浏览器别无选择,只能404响应

jQuery.ajax('https://domain.com/path', {
  crossDomain: true,
  data: postData,
  error: function(jqXHR, status, errorThrown) {
    //whatever
  },
  success: function(data, status, jqXHR) {
    //whatever
  },
  type: "POST",
  xhrFields: {
    withCredentials: true
  }
});

jQuery与CORS的选项请求没有任何关系。。。浏览器就是实现这一点的工具。请参阅:。IE8-9使用一个单独的对象XDomainRequest(jQuery不会检测或使用现成的对象),并且具有明显的限制


尝试curl、fiddler或其他实用程序来确认您的外部资源实际上位于一个单独的域上,并返回相应的请求响应?您应该能够在开发人员工具的网络视图中单击鼠标右键,并作为curl命令行进行复制(可能需要在windows中切换引号)。很可能你并没有按照你想象的方式提出请求,或者选项检查失败,或者外国资源返回了404。

我在处理CORS时遇到了困难,这可能会有所帮助:我刚刚意识到我的错误,我认为除了简单的HTTP GET之外,任何东西都需要预先飞行,但是W3C将GET、HEAD和POST列为简单的方法,它们不需要预先飞行,所以我的目标服务器受到了安全策略的限制。