@dieneri

Как разрешить выполнение POST-запроса на локальные домены и победить Access-Control-Allow-Origin?

Выполняю код, если подставить url с .ru, .com и т. д. - всё отрабатывает, ответ 200.
Если ставлю локальный адрес, который мне доступен из браузера (нужен для тестирования), то выпадает в ошибку..

Access to XMLHttpRequest at 'http://127.0.0.1:9000/push' from origin 'https://site.ru' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.


Как и просит браузер в консоли, разрешение добавил xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
Но всё равно выдаёт ту же ошибку.. В чём дело, не приложу ума..
Сам скрипт выполняю с хостинга. Обращение идёт к локальному адресу, доступному мне с моего компьютера.

<!DOCTYPE html>
<html>
<body>

<div>
тестируем js...
</div>

<script>
function upload() {
    var method = "POST";
    var url = "http://127.0.0.1:9000/push";

    var xhr = new XMLHttpRequest();

    xhr.open(method, url);

    xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
    xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
    
    var text = {"command":"PUSH"};
    xhr.send(text);

}         
upload();
</script>

</body>
</html>
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Заголовки CORS выставляются не в запросе, а в ответе сервера.
В вашем случае это заголовки должен возвращать сервер 127.0.0.1:9000.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Вы кое чего не понимаете, заголовок Access-Control-Allow-Origin должен отдавать целевой сайт, а не вы. То есть именно целевой сайт должен разрешить просмотр своего контента.
Ответ написан
Ваш ответ на вопрос

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

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