Заголовок CORS для API с большим количеством клиентов - PullRequest
0 голосов
/ 21 января 2019

За последние несколько часов я много читал о CORS, но в моем понимании все еще что-то не хватает.

Предположим, я пишу API, который должен использоваться клиентами в их собственных интерфейсах (которые, конечно, работают на другом хосте).

Какой заголовок access-control-allow-origin должен действительно возвращать ваши конечные точки API?

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

Единственный способ, который я могу себе представить, это то, что у меня есть белый список на моем сервере со всеми разрешенными клиентскими хостами, и если я получаю запрос, я проверяю, есть ли хост в этом списке, а затем возвращаю access-control-allow-origin: <that-matched-host>. Но это звучит довольно громоздко. И я не думаю, что это действительно подойдет для действительно больших API.

Или это урок, который мы должны извлечь, что мы не должны использовать куки для аутентификации?

привет

1 Ответ

0 голосов
/ 21 января 2019

Согласно спецификации , у вас не может быть файлов cookie, и Access-Control-Allow-Origin: *

Строка "*" не может использоваться для ресурса, который поддерживает учетные данные.

Как вы писали, у вас может быть источник в белом списке или лучше - избегайте использования куки для аутентификации.Аутентификация может быть выполнена путем предоставления некоторого токена клиенту, который будет использовать его в последующих запросах.

Кроме того, некоторые API не имеют никакой специфической для пользователя информации и не имеют аутентификации.В таких случаях может подойти Access-Control-Allow-Origin: *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...