【发布时间】:2016-10-06 16:26:26
【问题描述】:
我正在尝试制作一个很棒的 wifi 芯片 (esp8266) 来与 HTML 网页进行通信。
因此我使用了 XMLHttpRequest。我知道我必须设置 Access-Control-Allow-Origin 才能让它工作..
我仍然在控制台中收到错误:
XMLHttpRequest 无法加载 http://x.x.x.x:8000/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 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?
所以在我的 chrome 控制台中,我得到了标题: "200 OK\r\n\r\nOrigin: test\r\nAccess-Control-Allow-Origin: *\r\n\r\nContent-Type: text/html\r\n\r\nHello world!\ r\n\r\n"
对于正常页面,我看到 200 OK。所以 \r\n 不起作用....我必须找出如何发送 return 语句。当我将 200 设置为 404 时,我得到一个找不到页面。于是第一部分就收到了……
【问题讨论】:
-
Access-Control-Allow-Origin: "*"语法错误。它不应包含引号。 -
好的。肿瘤坏死因子。也许我已经试过了。但我会再试一次
-
嗯试过没有。但不工作。
-
响应头,也是空的:console.log(xmlhttp.getAllResponseHeaders());
-
这不是一个解决方案,只是一个注释。
标签: javascript header xmlhttprequest