Задать вопрос
@yaroslavklimuk

Access to fetch has been blocked by CORS policy, ошибка в запросе или в сервере?

Необходимо отправить данные с формы на сервер и получить ответ. Доступа к серверу нет.
На тестовых api (https://jsonplaceholder.typicode.com/) все работет, отправляю, получаю и все хорошо. Но на нужный мне получаю ошибку. В чем может быть проблема?
60cf871be270c094304054.png

Код запроса

const requestURL = 'https://your-url.com';

function sendRequest(method, url, body) {
	const headers = {
		'Content-Type': 'application/x-www-form-urlencoded',
	};
	return fetch(url,
		{
			method,
			body,
			headers,
		}).then((response) => {
		if (response.ok) {
			return response.text();
		}
		return response.text().then((error) => {
			const err = new Error();
			err.data = error;
			throw err;
		});
	});
}
const form = document.getElementById('form');

form.addEventListener('submit', (e) => {
	e.preventDefault();
	const formData = new FormData(form);
	const values = Object.fromEntries(formData.entries());
	sendRequest('POST', requestURL, JSON.stringify(values))
		.then((data) => console.log(data))
		.catch((err) => console.log(err));
	// sendRequest('GET', requestURL, null)
	// 	.then((data) => console.log(data))
	// 	.catch((err) => console.log(err));
});

  • Вопрос задан
  • 613 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
XXXXPro
@XXXXPro
Fullstack Web developer
Сервер должен выдавать заголовок Access-Control-Allow-Origin, где указывать, с каких сайтов к нему можно обращаться с помощью fetch. У тестовых API, скорее всего, выдаётся Access-Control-Allow-Origin: *, поэтому на них всё и работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы