• 締切済み

XMLHTTPRequestでstatusが0に

2日程、色々と試したのですが、どうしても自分で解決できそうにないので お世話になりたいと思い質問させて頂きました。 XMLHttpRequestを使用し、サーバーと非同期通信を行っているのですが ChromeとFireFoxの場合、戻り値のstatusが0になり、サーバーからのレスポンスデータを 取得する事ができません。IEでは7 ~ 9まで正常に動作する事を確認しております。 (環境) クライアントOS:Windows7 Professinal サーバーOS:Windows7 Professinal Webサーバー:IIS7.5 ブラウザ:Google Chrome 16.0.912.77 m, FireFox 10.0.1 (クライアント側プログラム) function requestMain(param) {   // サーバー名はxxxにさせて頂きました。   var url = "http://xxx.xxx.xxx.xxx/app/xhr.cgi?" + param;   var obj = createHttpRequest();   obj.open("GET", url, true);   obj.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");   ojb.onreadystatechange = function()   {    if (obj.readyState==4)    {      alert(obj.status);       // ← ここが0に。IEだと200が返ってきます。      alert(obj.responseText);   // ← IEの場合予期したデータがきます。Chrome/FF                        // ともに空です。    }   }   httpoj.send(""); } function createHttpRequest() {   if(window.ActiveXObject)   {    try    {     return new ActiveXObject("Msxml2.XMLHTTP");    }    catch (e)    {     try     {       return new ActiveXObject("Microsoft.XMLHTTP");     }     catch (e2)     {      return null;     }   }  }  else if(window.XMLHttpRequest)  {   return new XMLHttpRequest();  } } (サーバー側) static void main(string[] args) {   string rtnStr = "HTTP/1.0 200 OK\n";   rtnStr += "<head>\n";   rtnStr += "Access-Control-Allow-Origin:*\n" // ← クロスドメイン対策???   rtnStr += "Content-Type: text/html; charset=UTF-8;\n;   rtnStr += "</head>\n\n";   rtnStr += "<body>test is</body>";   Console.WriteLine(rtnStr); } 試しに、prototype.jsのAjax.Requestを使用しても結果は同じでした。 後、プログラムでなく、ブラウザーのURL覧からCGIをコールするとtest isが表示されます。 ※ CGIはC#で書いています。ASP.NETがあるので意味がないのですが すみません。^^; 過去にも似たような質問をされた方がいらっしゃったのですが 結局クロスドメインの問題じゃない?とか回答がついてないとかで 答えがわかりませんでした。英語サイトにはそれなりに情報があるみたいですが 読めないのでよくわかりません ;_; (調べろと言われればそれまでなのですが。。。) 組み込み系や、C/S・スタンドアロンでのWindowsアプリはそれなりの経験を 持っているのですが、Web系は今回初めてで、やり始めて丁度10日になります。 ですので、トンチンカンなご質問をしているかもわかりませんが、 どうぞよろしくお願いいたします。 P.S 最近html, css, javascriptがお試し程度にわかり4、5ページ画面遷移した 簡単なクライアント側アプリを作れる程度です。

みんなの回答

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

HTTP ヘッダと HTML の HEAD 要素が頭の中で混ざってぐちゃぐちゃになっちゃってる感じ。 | HTTP/1.0 200 OK | <head> | Access-Control-Allow-Origin:* | Content-Type: text/html; charset=UTF-8 | </head> | | <body>test is</body> ↑ではなくて↓を返すと大丈夫かも。 | HTTP/1.0 200 OK | Access-Control-Allow-Origin:* | Content-Type: text/html; charset=UTF-8 | | <html> | <head><title>test is</title></head> | <body><p>test is</p></body> | </html>

OSHIOSHI77
質問者

お礼

ありがとうございます。 明日試してみます!