2014-10-06 74 views
0

我試圖使一個偉大的無線芯片(esp8266)與HTML網頁進行通信。發送正確的XMLHttpRequest標頭

因此我使用XMLHttpRequest。我知道,我必須設置訪問控制允許來源讓它工作..

我仍然得到錯誤的控制檯:

的XMLHttpRequest無法加載http://x.x.x.x:8000/。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。

所以WiFi模塊正在發送這個頭:

WIFI模塊響應

HTTP/1.1 200 OK\r\n 
Access-Control-Allow-Origin: *\r\n 
Content-Type: text/html\r\n 
Hello world!\r\n 

然後我試圖與網頁進入電影吧:

javascipt的

var xmlhttp; 

function loadXMLDoc(){ 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     console.log("readystate " + xmlhttp.readyState); 
     console.log("status " + xmlhttp.status); 
     console.log(xmlhttp.getAllResponseHeaders()); 
     console.log(xmlhttp.responseText); 

     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
      console.log(xmlhttp.responseText); 
      //document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","http://192.168.1.101:8000",true); 
    xmlhttp.send(); 
    //console.log("status " + xmlhttp.status); 
} 

function send() { 
    xmlhttp.send("jooooo"); 
} 

loadXMLDoc(); 

對不起,但不能舉一個例子,因爲它在本地運行。

也許有人可以給我一個調試方法?

更新

我能看頭在Chrome中。 \ r \ n顯示在標題中。我可以發送200或404狀態。但現在我必須找出如何發送返回聲明。 View HTTP headers in Google Chrome?

所以在我的鉻控制檯我得到的標題: 「200 OK \ r \ n \ r \ nOrigin:測試\ r \ nAccess-控制允許來源:* \ r \ n \ r \ nContent - 類型:text/html \ r \ n \ r \ n你好世界!\ r \ n \ r \ n「

對於正常頁面,我看到200 OK。所以\ r \ n不工作....我必須找出如何發送return語句。當我將200設置爲404時,我找不到頁面。所以第一部分收到...

+0

'Access-Control-Allow-Origin:「*」'是錯誤的語法。它不應該包含引號。 – hindmost 2014-10-06 15:00:54

+0

好的。 TNX。也許我沒有嘗試過。但我會再試一次 – 2014-10-06 15:02:15

+0

嗯試過沒有。但不工作。 – 2014-10-06 15:04:58

回答

0

好吧,我刪除了\ r \ n字符。

我只是發送與串行通信分開的標題。

我在發送成功: HTTP/1.1 200 OK 訪問控制允許來源:* 的Content-Type:text/html的

和響應將在JavaScript加載..