2014-10-06 66 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加载..