Имеются два приложения:
http://api.domain.comhttp://test.domain.com:8080Пытаюсь запросом к api получить Cookie в ответ.
Код на клиенте:
axios.get('//api.domain.com/api/testget')
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error)
})
Код на сервере (api routes):
Route::get('/testget', function () {
return response('ok')
->cookie('name', 'value', 10, '/', '.domain.com', false, false)
});
Header присутствует:
Set-Cookie: name=value; expires=Wed, 06-Jun-2018 15:31:51 GMT; Max-Age=600; path=/; domain=.domain.com
Но document.cookie возвращает "", на панели разработчика в браузере в разделе Application->Cookies тоже ничего нету. Ошибок в консоли нету.
Response Headers полностью:
HTTP/1.1 200 OK
Date: Wed, 06 Jun 2018 15:23:44 GMT
Server: Apache
Cache-Control: no-cache, private
Access-Control-Allow-Origin: http://admin.domain.com:8080
Vary: Origin
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
Set-Cookie: name=value; expires=Wed, 06-Jun-2018 15:33:44 GMT; Max-Age=600; path=/; domain=.domain.com
Content-Length: 2
Keep-Alive: timeout=10, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
В чем может быть проблема?
Решение:
axios.get('//api.domain.com/api/testget', {withCredentials: true}) //<---
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error)
})
Сервер должен устанавливать соответственный Header при отправке ответа. Полезная библиотека.
Конфиг:
return [
...
'supportsCredentials' => true, //<---
...
]
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости