Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2024, 10:26
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

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

Как можно изменить в модели клиента вызов товаров с локального сервера(запускается по npm start), чтобы эта ошибка не возникала?
Изображения:
Тип файла: jpg 1707675403032.jpg (10.6 Кб, 3 просмотров)
Вложения:
Тип файла: zip Сервер и клиент.zip (3.0 Кб, 3 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2024, 11:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,742

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

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

Последний раз редактировалось voraa, 12.02.2024 в 11:32.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2024, 20:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,567

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

Ну и почитайте про CORS: что это такое, почему возникло, как с ним работать. Без этого в современном вебе никуда.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2024, 23:12
Аспирант
Отправить личное сообщение для roland Посмотреть профиль Найти все сообщения от roland
 
Регистрация: 02.11.2023
Сообщений: 30

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
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2024, 10:01
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Сообщение от roland Посмотреть сообщение
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 сервера? В какой строке?
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2024, 17:22
Аспирант
Отправить личное сообщение для roland Посмотреть профиль Найти все сообщения от roland
 
Регистрация: 02.11.2023
Сообщений: 30

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

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
Как сделать что бы картинки с другого url отображались как свои zlodey Серверные языки и технологии 1 04.05.2015 21:30
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34
Как сделать такую страницу mortido Элементы интерфейса 11 02.10.2014 07:20
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48