@Drakondr

Как реализовать политику CORS в fetch?

в общем, есть fetch запрос
fetch('http://localhost:3000', {
    headers: {
        'Content-Type': 'text/plain'
    }
})
    .then(res => {
       // img.style.background = `url(http://localhost:3000) no-repeat`
        console.log(res)
        res.text().then(data2 => {
            console.log(data2)
        })
    })

Есть код на сервере
var http = require('http')
var data2 = 'hello'

http.createServer(function(req, res) {
	res.writeHead(200, { 'Content-Type': 'text/plain' });
  	res.end(data2);
	console.log('img')
}).listen(3000)
console.log('Сервер работает')


при отправке запроса вылезает ошибка
Access to fetch at 'localhost:3000' from origin 'localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
что у меня в коде не так, с вариантом поставить mode: 'no-cors' уже fetch не может обрать запрос и с моего сервера, и со стороннего
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
\( ゚ヮ゚)/
- res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.writeHead(200, {
+     'Content-Type': 'text/plain',
+     'Access-Control-Allow-Origin': '*'
+ });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Дело происходит в Chrome? Там баг, не позволяющий работать с localhost.

Попробуйте прописать в hosts любой домен, указывающий на адрес 127.0.0.1, и работать с ним.

И, разумеется, надо добавить в ответы сервера заголовок Access-Control-Allow-Origin: *
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы