Я пытаюсь заставить CORS работать на моем сервере AWS Lambda, используя Serverless. Сейчас у меня есть два поддомена (api.site.co и app.site.co).
В моем файле app.js в Express я установил CORS и включил его следующим образом:
app.use(
cors({
origin: 'https://app.site.co',
optionsSuccessStatus: 200,
}),
);
app.options('*', cors());
А затем, используя модуль Axios в React, я делаю этот вызов:
axios
.post('/users/register', user)
.then(res => history.push('/login'))
.catch((err) => {
dispatch({
type: GET_ERRORS,
error: err.response.data,
});
});
Кроме того, в моем файле app.js для клиентского приложения:
axios.defaults.baseURL = 'https://api.site.co';
При отправке любого запроса я получаю эту ошибку:
Access to XMLHttpRequest at 'https://api.site.co/users/register' from origin 'https://app.site.co' 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.
Итак, я также попытался изменить свою конфигурацию CORS на:
app.use(cors());
app.options('*', cors());
Но я все еще получаю ту же ошибку.
Любые предложения о том, как решить эту проблему?





Похоже, опечатка:
https://app.site.co/users/register => https://api.site.co/users/register
Вы делаете запрос к https://api.site.co, но в вашей конфигурации указан https://app.site.co
Это была проблема с настройкой AWS Lambda Serverless. мне нужно было добавить
functions:
app:
handler: app.handler
events:
- http:
path: /
method: any
cors:
origin: 'https://app.site.co'
- http:
path: '{proxy+}'
method: any
cors:
origin: 'https://app.site.co'
Чтобы он разрешал запросы CORS при проксировании промежуточного программного обеспечения Express.
Хм. Запрос переходит от app.site.co (клиентское приложение) к api.site.co (REST API). Можете пояснить, о каком конфиге идет речь? Конфигурация CORS?