Проблема с CORS в nodemcu esp8266 - PullRequest
0 голосов
/ 03 июля 2018

Ответ на предполетный запрос не проходит проверку контроля доступа: Нет Заголовок «Access-Control-Allow-Origin» присутствует в запрошенном ресурс. Происхождение 'http://192.168.100.2:8100' поэтому не допускается доступ. Ответ имеет HTTP-код состояния 404.

При попытке вызвать запрос на размещение / публикацию в веб-сервере iot ESP8266 возникает ошибка выше.

Чтобы решить эту проблему, я попытался добавить приведенный ниже код. Но ничего не сработало.

server.on("/", HTTP_OPTIONS, []() {
    server.sendHeader("Access-Control-Allow-Origin", "*");
    server.sendHeader("Allow", "HEAD,GET,PUT,POST,DELETE,OPTIONS");
    server.sendHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT");
    server.sendHeader("Access-Control-Allow-Headers", "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept");
});

server.on("/testPost", HTTP_POST, testCors);
server.on("/testPut", HTTP_PUT, testCors);

А внутри функции

void testCors()
{
    Serial.print("HTTP Method: ");
    Serial.println(server.method());

    server.sendHeader("Access-Control-Allow-Origin", "*");
    server.sendHeader("Allow", "HEAD,GET,PUT,POST,DELETE,OPTIONS");
    server.sendHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT");
    server.sendHeader("Access-Control-Allow-Headers", "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept");
    server.send(200, "text/plain", "");
}

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Это решение для подстановочного пути, который работал для меня

void config_rest_server_routing()
{
    server.on("/", HTTP_GET, []() {
        server.send(200, "text/html",
                    "Welcome to the ESP8266 REST Web Server");
    });
    server.on("/leds", HTTP_GET, get_leds);
    server.on("/leds", HTTP_POST, testCors);
    server.on("/leds", HTTP_PUT, testCors);

    server.onNotFound(handleNotFound);
}
void handleNotFound()
{
    if (server.method() == HTTP_OPTIONS)
    {
        server.sendHeader("Access-Control-Allow-Origin", "*");
        server.sendHeader("Access-Control-Max-Age", "10000");
        server.sendHeader("Access-Control-Allow-Methods", "PUT,POST,GET,OPTIONS");
        server.sendHeader("Access-Control-Allow-Headers", "*");
        server.send(204);
    }
    else
    {
        server.send(404, "text/plain", "");
    }
}
...