从 esp javascript 获取时出现 CORS 错误

get CORS Error when fetch from esp javascript

我设置了一个 ESP32 网络服务器,它以 .json 格式为我提供传感器值。 在控制台中我得到错误:

错误:Cross-Origin 请求被阻止:同源策略不允许读取位于 http://10.0.0.40/sensor 的远程资源。 (原因:缺少 CORS header ‘Access-Control-Allow-Origin’)。

错误:未捕获(承诺)类型错误:尝试获取资源时出现网络错误。

我需要更改什么?

// JavaScript source code
fetch('http://10.0.0.40/sensor')
    .then(response => response.json())
    .then(data => {

        var unit0 = data['0']['unit'];
        var unit1 = data['1']['unit'];

        var temperature = data['0']['value'];
        var humidity = data['1']['value'];

        document.getElementById("sensortemperature").innerHTML = temperature + unit0;
        document.getElementById("sensorhumidity").innerHTML = humidity + unit1;

        console.log(temperature + unit0);

    })

错误消息表明 CORS 错误:

Error: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://10.0.0.40/sensor. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

ESP32 网络服务器需要为 browser/client 请求您的传感器数据启用 CORS。

您的评论表明您正在使用 ESP WebServer 库。这提供了一个 enableCORS() 方法(参见 https://github.com/espressif/arduino-esp32/blob/master/libraries/WebServer/src/WebServer.h#L127)。

因此您可以在创建网络服务器后启用 CORS,例如:

WebServer server();
server.enableCORS(true);