Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как победить CORS? (https://javascript.ru/forum/misc/85753-kak-pobedit-cors.html)

borus 12.02.2024 10:26

Как победить CORS?
 
Вложений: 2
Здравствуйте!
Выполняю учебное задание, в котором есть локальный сервер(файлы в папке server), который должен отдавать список товаров. Пытаюсь клиентом(файлы в папке client) получить их от сервера, который в свою очередь тянет их откуда-то еще, и возникает ошибка, связанная с CORS.

Как можно изменить в модели клиента вызов товаров с локального сервера(запускается по npm start), чтобы эта ошибка не возникала?

voraa 12.02.2024 11:28

Цитата:

Сообщение от borus
который в свою очередь тянет их откуда-то еще, и возникает ошибка, связанная с CORS.

CORS - это браузерная приблуда. На сервере ее не бывает.

Ваш сервер должен посылать клиенту заголовок
Access-Control-Allow-Origin: '*'

Aetae 12.02.2024 20:58

borus, либо так как сказали выше, но если это только для разработки, то правильнее использовать devserver proxy, который будет просто проксировать локальные запросы вида /api?foo=bar на ваш сервер без всякого CORS. Настройка зависит от того, что вы за devserver используете, но в большинстве серверов для разработки такая функция есть.

Ну и почитайте про CORS: что это такое, почему возникло, как с ним работать. Без этого в современном вебе никуда.

roland 13.02.2024 23:12

borus, этого должно хватить:
// npm install cors

const cors = require('cors')

app.use(cors())
https://expressjs.com/en/resources/middleware/cors.html
https://www.npmjs.com/package/cors

borus 14.02.2024 10:01

Цитата:

Сообщение от roland (Сообщение 554770)
borus, этого должно хватить:
// npm install cors

const cors = require('cors')

app.use(cors())
https://expressjs.com/en/resources/middleware/cors.html
https://www.npmjs.com/package/cors

Здравствуйте! Спасибо.
Это надо вставить в index.js сервера? В какой строке?

roland 14.02.2024 17:22

borus, строку:
const cors = require('cors')
желательно вставить в том же месте, где объявляются остальные константы с "require". По семантике желательно вставить строку после:
const express = require('express');

Строку:
app.use(cors())
желательно вставить сразу после:
const app = express();

И обязательно перез этим выполните в консоле команду "npm install cors" для установки пакета "cors". Так как в вашем коде у вас уже присутствуют другие пакеты, для вас это не должно стать проблемой.

Обратите внимание, что в моем коде не используются точки с запятой в конце строк. И хотя в данном случае это ни на что не повлияет, в вашем коде их тоже стоит добавить для поддержания единого стиля.


Часовой пояс GMT +3, время: 19:38.