Форма отправки с HTTP-POST вызывает ошибку CORS - PullRequest
0 голосов
/ 20 января 2019

Существует бэкэнд, написанный на C ++, который обрабатывает HTTP-запросы (используя JSON).Интерфейс использует семантический интерфейс, но для отправки запроса используется ajax:

$(document).ready(function () {
function createProjectJson(projectName) {
    var ret = JSON.stringify({
        project: {
            identity: {
                name: projectName
            }
        }
    })
    return ret;
}

var endpoints = {
    'createProject': 'http://127.0.0.1:1912/api/projects'
}

$('form .submit.button').click(function (event) {
    var proName = $("#createPro").val();
    if(proName.length === 0)
        event.preventDefault();
    else
    {
        var payload = createProjectJson(proName);

        $.ajax({
            dataType: "json",
            url: endpoints.createProject,
            data: payload,
            method: "POST"
        }).done(function( json ) {
            console.log("done");
         })
         .fail(function( xhr, status, errorThrown ) {
           console.log( "Error: " + errorThrown );
           console.log( "Status: " + status );
           console.dir( xhr );
         });
    }
});
});

Форма выглядит так:

 <form class="ui form">
        <div class="field">
            <label>Project name</label>
            <div class="field">
                <input id="createPro" type="text" name="name" placeholder="Give the project a name">
            </div>
        </div>
        <div class="ui checkbox">
            <input type="checkbox" class="hidden">
            <label>Project enabled</label>
        </div>
        <div class="ui submit button">Create</div>
    </form>

Согласно CORS ,не должно быть срабатывания CORS.Почему я получаю эту ошибку: request console output

Веб-сервер работает на 172.0.0.1:5500 (я использую серверный плагин live вКод VS).Я также реализовал CORS на бэкэнде (повторяя источник в ответе CORS) на PUT, с той же ошибкой.Я попытался использовать * (в Access-Control-Allow-Origin) в ответе CORS, тот же результат.Данные ответа сервера - просто пустое {}.Кроме того, я проверил бэкэнд (без необходимости в OPTIONS) и wireshark не показывал никаких других пакетов в качестве ответа POST +.

1 Ответ

0 голосов
/ 20 января 2019
  1. В соответствии со спецификацией должен быть запрос CORS, а не предполетный запрос.
  2. Код работает в http://127.0.0.1:1912, а ресурс в http://127.0.0.1:5500. Разные порты означают разные источники, поэтому это запрос CORS.
  3. На предоставленном вами скриншоте в заголовке ответа нет Access-Control-Allow-Origin. Вы должны добавить один, чтобы решить проблему.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...