远程服务器上的XmlHttpRequest status = 0,localhost上的状态200

时间:2013-04-29 05:39:35

标签: php javascript ajax apache xmlhttprequest

我有两个几乎相同的PHP代理脚本,我通过几乎相同的JS调用。第一种方法在所有情况下都能正常工作。

第二个(下面的代码)适用于Firefox和Chrome中的localhost 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数据)。
  • 提供PHP脚本的完整路径

Chrome中可能导致此问题的原因是什么?

编辑:这是失败的PHP请求的请求标头。没有收到回复。

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

1 个答案:

答案 0 :(得分:0)

您是否可以通过激活Chrome的开发人员工具(工具 - >开发人员工具)重新尝试失败的请求,并在此处发布请求和响应的标头(在“网络”标签中),以及控制台中的任何错误消息标签?