JavaScript - запрос API (ошибка Access-Control-Allow-Origin)

Парня, ответственного за запросы API, ушел на неделю, так что на стороне сервера ничего нельзя сделать.

fetch("https://url.com/api/login/", {
    method: "post",
    headers: {
        // 'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: JSON.stringify({
        username: "[email protected]",
        password: "123"
    })
}).then(function (response) {
    return response.json();
}).then(function (myJson) {
    console.info(myJson);
});

Он работает с Postman, но, как я слышал, Postman не обеспечивает такую ​​же безопасность, как браузеры, поэтому для Postman это не проблема. Но я сомневаюсь, что это так, т.к. авторское php-решение работает нормально.

Это пример работающего php-решения (он его написал):

    function login($username, $password) {
        $curl = curl_init(); curl_setopt_array($curl, array(
            CURLOPT_URL => "https://url.com/api/login/",
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => false,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_POSTFIELDS => "username = ".$username."&password = ".$password,
            CURLOPT_HTTPHEADER => array(
                "cache-control: no-cache",
                "content-type: application/x-www-form-urlencoded"),
        ));

        $response = curl_exec($curl);
        curl_close($curl);
        $authdata = json_decode($response);
        if ($authdata -> success) {
            //success
            return true;
        } else {
            //fail
            return false;
        }
    }

Чего не хватает в моем коде? Как я могу заставить его работать как его решение php. (Нет опыта работы с php).

Любая помощь очень ценится.

Обновлено:

Что сработало на Почтальоне:

  • Необработанный формат json в Body.
  • Добавление значений как Key и Value в x-www-form-urlencoded
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы решить эту ошибку, вы можете сделать 3 вещи:

  1. Добавьте свою исходную серверную часть.
  2. Запустите свой javascript в том же домене.
  3. Проверьте ответ это для отключения той же политики происхождения в Chrome. Это позволит вам тестировать свой код до тех пор, пока не вернется человек, ответственный за API.

Спасибо за ответ, я скоро проверю эти варианты. Кстати, мое решение правильное, то есть проблема на стороне сервера / или должна быть в том же домене?

stacky 21.05.2018 14:10

Браузер блокирует запрос, потому что домен API отличается от домена, на котором работает ваш javascript. При добавлении строки Allow Origin на сервере. Сервер сообщает браузеру (в заголовках ответа) разрешить ваш домен javascript. Так что да, это на стороне сервера.

Mike Bovenlander 21.05.2018 14:19

Другие вопросы по теме