Совместное использование ресурсов с использованием учетных данных
У меня есть общая форма аутентификации для нескольких поддоменов (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 ответа
Две мысли:
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">
// cross domain
header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');