Парня, ответственного за запросы 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).
Любая помощь очень ценится.
Обновлено:
Что сработало на Почтальоне:
Key и Value в x-www-form-urlencoded


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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