我试图制作一个优秀的wifi芯片(esp8266)与HTML网页进行通信。
因此我使用XMLHttpRequest。我知道我必须设置Access-Control-Allow-Origin才能让它工作..
我仍然在控制台中收到错误:
XMLHttpRequest无法加载http://x.x.x.x:8000/。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。
所以wifi模块正在发送这个标题:
WIFI MODULE RESPONSE
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状态。但现在我必须找出如何发送return语句。 View HTTP headers in Google Chrome?
所以在我的chrome控制台中,我得到了标题: " 200 OK \ r \ n \ r \ nOrigin:test \ r \ nAccess-Control-Allow-Origin:* \ r \ n \ r \ nContent-Type:text / html \ r \ n \ r \ nHello !世界\ r \ n \ r \ n"
使用普通页面,我看到200 OK。所以\ r \ n不起作用....我必须找出如何发送return语句。当我将200设置为404时,我找不到页面。所以第一部分就收到了......
答案 0 :(得分:0)
好的,我删除了\ r \ n字符。
我只是通过单独的串行通信发送标题。
我成功发送: HTTP / 1.1 200好的 Access-Control-Allow-Origin:* 内容类型:text / html
响应将在javascript中加载..