【发布时间】:2020-03-30 13:09:09
【问题描述】:
我有一个用 MCU + ESP-01 WIFI 模块完成的小服务器。在 PC 上,我创建了一个带有按钮的 HTML 文件,当按下它时,它会通过互联网向服务器主板发送一个 GET 请求。这是有效的,董事会对浏览器的响应显示在 HTML 的文本框中。 董事会的响应在其标题中包括:“HTTP/1.1 200 OK”、“Access-Control-Allow-Origin: *”、“Access- Control-Allow-Methods: GET, POST", "Access-Control-Allow-Headers: Content-Type, Origin" 和 "Content-Type: application/json”。然后在标头之后是一个小的 JSON 字符串作为数据(这个 JSON 字符串是在 HTML 的文本框中显示的内容)。
下面是我的 HTML 按钮代码:
<!DOCTYPE html>
<html>
<head>
<title>BUTTON OVER INTERNET</title>
<meta charset="UTF-8"/>
</head>
<body>
<input type="text" id="result_text" size="15">
<input type="button" onclick="Send()" value="SEND-REQUEST">
<script>
function Send()
{
document.getElementById("result_text").value = "";
var XHR = new XMLHttpRequest();
XHR.open("GET", "http://163.192.145.78:8383/internet_test", true);
XHR.setRequestHeader("Origin", "http://someIP.com");
XHR.timeout = 4000;
XHR.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("result_text").value = this.responseText;
XHR.abort();
}
};
XHR.ontimeout = function (e)
{
alert("TIMEOUT!");
XHR.abort();
};
XHR.send();
}
</script>
</body>
</html>
以下是 MCU 为每个请求接收的数据包:
MCU(服务器)接收到的报头中的“Origin”字段始终为“null”值。在我使用该服务器的应用程序中,出于安全目的,我想确定请求来自何处。缺少什么?
另外,我尝试在 XHR.open 之后添加到 XMLHTTPRequest,如下所示: XHR.setRequestHeader("Origin", "http://www.someIP.com"); 但是 Origin 这样做也是空的......
目前,应用程序将使用本地文件中的这个 HTML 按钮(例如,我可以通过 WhatsApp 将 HTML 发送给另一个人),而不是在服务器中。在这种情况下,是否可以将 Origin 附加到它?
嗯,我需要确定请求的来源......
【问题讨论】:
标签: javascript html server cors xmlhttprequest