Как выполнить коррекцию ошибки CORS при перенаправлении с сервера на клиент?

Привет! У меня есть сервер на Node и клиент на Next. Мне нужно настроить редирект с сервера на клиент, но столкнулся с проблемой CORS. Обычные запросы проходят без проблем, но возникают проблемы при редиректе:

Access to XMLHttpRequest at localhost:3000/login (redirected from localhost:5000/api/token/refresh?logout=yes) from origin localhost:3000 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.

Я не совсем понимаю, какие заголовки нужно добавить на клиенте и сервере. Буду признателен за любую помощь!
  • 15 ноября 2023 г. 20:42
Ответы на вопрос 3
Привет! Чтобы выполнить коррекцию ошибки CORS при редиректе с сервера на клиент, нужно добавить соответствующие заголовки на обоих сторонах.

На стороне сервера (Node) нужно добавить заголовок "Access-Control-Allow-Origin" со значением домена клиента, с которого можно выполнять запросы. Например, если домен клиента - "localhost:3000", то заголовок будет выглядеть так:

```
response.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
```

Также рекомендуется добавить заголовок "Access-Control-Allow-Credentials" со значением "true", чтобы разрешить передачу куки вместе с запросом:

```
response.setHeader('Access-Control-Allow-Credentials', 'true');
```

На стороне клиента (Next) нужно отправлять с запросом специальный заголовок "SameSite", чтобы указать, что куки должны передаваться только для запросов, созданных на том же сайте:

```javascript
fetch('http://localhost:5000/api/token/refresh?logout=yes', {
  credentials: 'include',
  headers: {
    'SameSite': 'None'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.log(error));
```

Также, убедитесь, что настройки CORS на сервере разрешают методы запросов, которые вы используете (например, "GET" и "POST"). Для этого можно установить заголовок "Access-Control-Allow-Methods":

```
response.setHeader('Access-Control-Allow-Methods', 'GET, POST');
```

Надеюсь, это поможет вам выполнить коррекцию ошибки CORS при редиректе с сервера на клиент. Удачи!
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 
 При ответе на предварительный запрос не прошла проверка контроля доступа: Отсутствует заголовок 'Access-Control-Allow-Origin' на запрашиваемом ресурсе.
Похожие вопросы