Совместное использование ресурсов с использованием учетных данных - PullRequest
28 голосов
/ 10 ноября 2011

У меня есть общая форма аутентификации для нескольких поддоменов (example.com, blog.example.com и app.example.com). Форма входа должна предоставить эти данные на example.com независимо от того, где они отображаются, поэтому я подумал об использовании CORS, но это:

header("Access-Control-Allow-Origin: http://example.com http://blog.example.com http://app.example.com")

не работает

Поэтому я подумал сделать следующее, проверить заголовок Origin вручную на стороне сервера и разрешить Access-Control-Allow-Origin: *, чтобы можно было отправлять запросы, но, к сожалению, в MDN это приводит к увеличению .

Важное примечание: при ответе на запрос учетных данных сервер должен указать домен и не может использовать групповые символы.

Есть ли способ заставить мой запрос работать в нескольких доменах и при этом отправлять учетные данные с помощью CORS?

Ответы [ 2 ]

41 голосов
/ 10 ноября 2011

Две мысли:

1) Вы также включаете заголовок «Access-Control-Allow-Credentials: true»? Это необходимо для передачи учетных данных cookie (и соответствующий клиент XHR должен установить .withCredentials = true)

2) Вы пробовали предложение по вашей ссылке и указали только источник для текущего запроса. Например, если запрос приходит с заголовком «Origin: http://blog.example.com",», вы отвечаете «Access-Control-Allow-Origin: http://blog.example.com",», а не списком источников. Это требует немного больше работы над реализацией на стороне сервера.

3) Еще одна мысль, вы упоминаете, что у вас есть одна форма входа в систему, которая должна совместно использоваться различными доменами. Ну, если это стандартная форма HTML, вы можете делать обычные формы для всех доменов. Вам не нужно использовать CORS. Просто установите свойство "action" формы в URL, который вы хотите опубликовать. Например:

<form name="login" action="http://login.example.com/doLogin">
0 голосов
/ 02 сентября 2014
// cross domain
header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...