Метод POST через JavaScript не извлекает данные из API, но извлекает данные из Почтальона - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь получить данные из API, используя JavaScript, и этот API работает в Postman, но не работает в javaScript.

Этот код отображается в консоли как не удалось получить данные ответа и не определено:

<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>Insert title here</title>
</head>
<body>
    <h2> only fetch APi</h2>

    <script>
    fetch('https://smweb.in/hungaroo/app/api/plan_list', {
        method: 'POST',
        mode: 'no-cors',
        redirect: 'follow',
        headers: {
            "Accept": "application/json",
            "Access-Control-Allow-Origin": "*",
            "Content-Type": "application/json"
        }
    })
    .then(function (response) {
        return response.text();
    })
    .then(function(data) {
        console.log(data);
    })
    </script>
</body>
</html>

1 Ответ

1 голос
/ 24 января 2020

Кажется, что этот код приводит к непрозрачному ответу (используя режим запроса: 'no-cors'). Непрозрачные ответы не имеют тела, и, следовательно, вы ничего не получите при попытке записать ответ. Access-Control-Allow-Origin является заголовком ответа, поэтому его следует устанавливать в объекте ответа, отправляемого источником (сервером), а не в запросе. Без этого вы не получите значимого ответа от сервера. Добавление режима: «no-cors» к вашему запросу - это хакерский способ получить непрозрачный ответ от конечной точки, для которой в заголовке ответа не установлен Access-Control-Allow-Origin. Дальнейшее объяснение здесь:

Попытка использовать fetch и перейти в режим: no-cors

как обработать ответ выборки из «непрозрачного» типа?

Почему почтальон работает тогда? Я нашел эту статью полезной: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Кажется, что, хотя Fetch API следует политике одного и того же происхождения, Postman этого не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...