我有两个几乎完全相同的PHP代理脚本,可通过几乎完全相同的JS调用。第一种在所有情况下都可以正常工作。
第二个代码(下面的代码)可以在Firefox和Chrome的本地IIS服务器上运行。在远程Glassfish Apache服务器上,它可以在Firefox中运行,但是在Chrome中返回status = 0
并返回空值(已在v22和v26中进行了测试)。这两个PHP代理脚本实际上是相同的,并且下载的长度数据相似(介于1和4 MB之间)。使用以下JS,将同时触发else和onerror警报。
var dateQueryText = interviewDays[exitDay];
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4){
if (xmlhttp.status == 200){
var xmlDoc=xmlhttp.responseXML;
processGPX(xmlDoc);
}
else{alert("Download of GPS data failed for date " + dateQueryText + " Status: " + xmlhttp.status);}
}
}
xmlhttp.onerror = function (e){alert("Error encountered and download of GPS data failed for date " + dateQueryText + " Status: " + xmlhttp.status);};
xmlhttp.open("POST","proxy2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
params = ("case=" + caseID + "&gps=true" + "&date=" + dateQueryText);
xmlhttp.send(params);
我尝试了以下无济于事:
async
和synchronous
下载return
类型,因为服务器{xmlhttp.overrideMimeType("text/xml");}
并不总是能够理解GPX(XML格式的GPS数据)。 是什么原因导致Chrome出现问题?
编辑:这是失败的PHP请求的请求 header 。没有收到回应。
Request URL: https://www.XXX.edu/AAA/BBB/CCC/proxy2.php
Request Headers
Cache-Control:no-cache
Content-type:application/x-www-form-urlencoded
Origin:https://www.XXX.edu
Pragma:no-cache
Referer:https://www.XXX.edu/AAA/BBB/CCC/exitgraphic.php?case=TESTCASE&instrument=0001&mode=TEST
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Ubuntu/12.10 Chromium/22.0.1229.94 Chrome/22.0.1229.94 Safari/537.4
Form Data
case:TESTCASE
inst:0001
mode:TEST
gps:true
date:02222013
最佳答案
您是否可以在激活Chrome的开发者工具(工具->开发者工具)后重试失败的请求,并在此处发布请求和响应的标题(在“网络”标签中),以及在“控制台”标签中显示任何错误消息?