javascript Междоменная (кроссдоменная) авторизация через Ajax cookie - ставим куку для всех поддоменов
Primary tabs
Предположим, я хочу поставить куку для всех подддоменов .ktu10.loc ( в том числе для web.ktu10.loc который открыт у меня в браузере) c домена auth.ktu10.loc,
тогда помимо ответа бэкэнда вида (у меня еще и нестандартный порт8888):
HTTP/1.1 200 OK Server: nginx/1.23.4 Date: Sun, 28 May 2023 11:47:48 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/8.1.5 Set-Cookie: XDEBUG_SESSION=netbeans-xdebug; path=/; SameSite=Lax Access-Control-Allow-Origin: http://web.ktu10.loc:8888 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS Access-Control-Max-Age: 1 Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description, X-AUTH-TOKEN, Set-Cookie Cache-Control: max-age=0, must-revalidate, private X-Robots-Tag: noindex Expires: Sun, 28 May 2023 11:47:48 GMT Set-Cookie: PHPSESSID=95a80d0873a880877660d9e101a6729e; path=/; domain=ktu10.loc; httponly; samesite=lax
-- тут у нас важны настройки CORS и базовый домен в Set-Cookie.
Так вот, помимо ответа бэкэнда нам необходимо, при отправке запроса через javacsript передавать withCredentials: true
Пример для axios:
export function loginUser(username: string, password: string) { axios.post(AuthHost.getLoginUrl(), { username, password }, { withCredentials: true } ) .then(function (response: any) { // console.log(response); }) .catch(function (error: any) { console.log('error'); }); }
- Log in to post comments
- 761 reads