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
  • プリフライト OK

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 リクエストをどこにでも阻止しませんか? まず、セキュリティ上の理由から、同じドメイン (ローカル ファイル システム) を参照できないためです。2 つ目は、同じオリジン ポリシーのため、他のドメインにアクセスできないためです。

于 2013-12-05T03:33:12.573 に答える