简体   繁体   English

获取 CORS 从 esp javascript 获取时出错

[英]get CORS Error when fetch from esp javascript

I set up an ESP32 Webserver which provides me Sensor Values in.json Format.我设置了一个 ESP32 网络服务器,它以.json 格式为我提供传感器值。 In Console i get the Error:在控制台中我得到错误:

Error: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://10.0.0.40/sensor .错误:跨域请求被阻止:同源策略不允许读取http://10.0.0.40/sensor的远程资源。 (Reason: CORS header 'Access-Control-Allow-Origin' missing). (原因:缺少 CORS header 'Access-Control-Allow-Origin')。

Error: Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.错误:未捕获(承诺中)类型错误:尝试获取资源时出现网络错误。

What do I have to change?我必须改变什么?

// 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);

    })

The error message indicates a CORS error:错误消息指示 CORS 错误:

Error: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://10.0.0.40/sensor .错误:跨域请求被阻止:同源策略不允许读取http://10.0.0.40/sensor的远程资源。 (Reason: CORS header 'Access-Control-Allow-Origin' missing). (原因:缺少 CORS header 'Access-Control-Allow-Origin')。

The ESP32 webserver needs to enable CORS for the browser/client requesting your sensor data. ESP32 网络服务器需要为请求传感器数据的浏览器/客户端启用 CORS。

Your comment states you are using the ESP WebServer library.您的评论表明您正在使用 ESP WebServer库。 This provides an enableCORS() method (see https://github.com/espressif/arduino-esp32/blob/master/libraries/WebServer/src/WebServer.h#L127 ).这提供了一个enableCORS()方法(参见https://github.com/espressif/arduino-esp32/blob/master/libraries/WebServer/src/WebServer.h#L127 )。

So you can enable CORS after you create the webserver like:因此,您可以在创建网络服务器后启用 CORS,例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM