我已经解决了这个问题几天,并在这个论坛上进行了接触,因为我觉得我已经筋疲力尽了。我在Drupal 7网站上托管了一个表单,需要将表单值提交到外部url。该表单通过jQuery.AJAX通过HTTPS协议使用POST请求
SCRIPT7002:XMLHttpRequest:网络错误0x2ef3,由于错误00002ef3而无法完成操作
我尝试了以下方法:
添加contentType:
// causes all of the jQuery callbacks to error out
“application/json; charset=utf-8”,
在实际POST之前尝试Ajax GET调用(如另一个SO线程上所建议)
添加header( 'Content-Type: application/json; charset=utf-8' );到请求中
header( 'Content-Type: application/json; charset=utf-8' );
组 crossDomain: true
crossDomain: true
添加了适当的CORS标头,并将表单代码粘贴在下面:
$.ajax({ url: "[URL]", //the page to receive the form data crossDomain: true, type: "POST", data: dataString, //posting to API dataType: "json", //the data type the function should expect back from the server success: function(data) { if (data.response_status == "1") { //error for at least 1 field //display error message } else { //display thank you label next to input } } else { //All form fields completed successfully! Redirect user to Thank you confirmation page } }, error: function(jqXHR, textStatus, errorThrown) { alert("there is an error!"); console.log("in error section"); console.log("jqXHR: " + jqXHR); console.log("jqXHR.responseText: " + jqXHR.responseText); console.log("textStatus: " + textStatus); console.log("errorThrown: " + errorThrown); data = $.parseJSON(jqXHR.responseText); console.log("parseJSON data: " + data); } }); }); });
任何指导都会有所帮助!谢谢
OP提供了WireShark捕获,该捕获显示服务器使用HTTPS CertificateRequest消息请求证书,然后客户端立即FIN建立连接。
CertificateRequest
FIN
配置服务器不请求客户端证书后,问题消失了。
使用Fiddler也会使问题消失,因为除非您进行配置,否则Fiddler绝不会从浏览器请求客户端证书。
我想知道是否只有受影响的客户端计算机具有匹配的证书,并且/或者withCredentials在这种情况下CORS XHR请求上的标志是否相关。
withCredentials