1

我有以下代码:

Util.xmlGet = function(uriend, callback) {
    var xmlhttp;
    var uri;
    if (window.XMLHttpRequest) {
        // code for modern browsers
        xmlhttp=new XMLHttpRequest();
    } else {// code for dinosaurs
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(document.URL.startsWith("file://")) {
        uri = "https://tomcat.realm:8443/worldmodel/worldmodel?";
    } else {
        uri = "/worldmodel/worldmodel?"
    }
    alert(uri+uriend);
    xmlhttp.onreadystatechange=function() {
        alert("readystate="+xmlhttp.readyState+", status="+xmlhttp.status);
        if (xmlhttp.readyState==4 && xmlhttp.status==0) {
            alert("preflight OK");
        }
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            alert("calling back");
            callback(xmlhttp.responseXML);
        }
    }
    xmlhttp.open("GET",uri+uriend,true);
    xmlhttp.setRequestHeader("Content-type","text/xml;charset=UTF-8");
    xmlhttp.send();     
   };

我在调用它时看到以下警报:

  • URI
  • 就绪状态=1,状态=0
  • 就绪状态=2,状态=0
  • 就绪状态=4,状态=0
  • 预检确定

浏览器发送一个 OPTIONS 请求,并收到“200”响应。更确切地说:

https://tomcat.realm:8443/worldmodel/worldmodel?type=thing
Request Method:
OPTIONS
Status Code:
HTTP/1.1 200 OK

Request Headers
14:35:30.000
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Origin:nullHost:tomcat.realm:8443
Connection:keep-alive
Access-Control-Request-Method:GET
Access-Control-Request-Headers:content-type
Accept-Language:hu,en-us;q=0.8,es;q=0.5,en;q=0.3
Accept-Encoding:gzip, deflateAccept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8


Response Headers  Δ5ms
Server:Apache-Coyote/1.1
Date:Thu, 06 Jun 2013 12:35:30 GMT
Content-Length:0
Allow:GET, HEAD, POST, TRACE, OPTIONS

永远不会发送 GET 请求,onreadystatechange 中不再有任何状态。

这是从 Firefox 21.0 Mozilla Firefox for Ubuntu Canonical - 1.0(这是帮助/关于 firefox 报告的内容)在本地文件系统中的 html 文件上完成的。

这里有什么问题?

4

1 回答 1

0

Firefox 不会阻止从本地文件系统上的文件到任何地方的 xhr 请求吗?首先是因为出于安全原因它不能引用同一个域(本地文件系统)。二是因为同源策略不能访问其他域。

于 2013-12-05T03:33:12.573 回答