• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ciasteczka i problem z Path

Object Storage Arubacloud
+2 głosów
348 wizyt
pytanie zadane 12 lipca 2021 w JavaScript przez Szyszka Gaduła (3,490 p.)
Witam. W aplikacji Angulara otrzymuję ciasteczka od serwera z Path ustawioną na /refresh. Jednak kiedy znajduje się na /refresh, to pliki cookie nie wysyłają się. A kiedy zmienię Path dla pliku cookie na /, to wtedy się wysyła. Dlaczego tak się dzieje, skoro ścieżka jest taka sama? Mimo to, ciasteczka pod F12 widoczne są pod ścieżką /refresh, kiedy jestem w tej lokalizacji, a będąc w lokalizacji / ich nie widać. I tu działa wszystko poprawnie, ale dlaczego te ciasteczka się nie wysyłają? Dzięki za pomoc!
komentarz 13 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Spróbowałbym też ręcznie wysłać z konsoli analogiczny Ajax - możesz użyć opcji Copy as Fetch, żeby mieć już z grubsza wypełnione dane pokroju URL-a, nagłówków i ciała. Dodałbym  do tego ręcznie nagłówek ciastka i wysłał to (z opcją withCredentials jeśli przez XHR lub { credentials: 'include' } w przypadku użycia Fetch) pod endpoint serwera. Jeśli wtedy ciastka będą dołączone, to raczej na pewno Angular coś wycina w tle.

1
komentarz 13 lipca 2021 przez Szyszka Gaduła (3,490 p.)
Zrobiłem fetcha, dodałem ciasteczka i ciągle się nie wysyłają. Ale te z Path ustawionym na "/" wysyłają się :/
1
komentarz 13 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Hmm... ciekawe.

Dobrze rozumiem, że w ciastku ustawiasz wartość path na "/refresh" a request ślesz pod adres "api/auth/refresh_token"? Jeśli tak, to - sądząc po dokumentacji - przeglądarka nie wysyła ciastek, ponieważ po prostu adresy się nie zgadzają. Powinieneś raczej ustawić path na "/api" (albo pełny URL, pod który wysyłasz request z ciastkiem), bo pod URL z takim początkiem wysyłasz request po refresh token.

Poza tym dlaczego nazywasz path jako "/refresh" a nie np. "/refresh_token" (zgodnie z końcówką URL-a) - chociaż "/refesh_token" raczej też jest błędne, bo path zaczynający się od "/" traktowany jest jako katalog, a "/refresh_token" w Twoim requeście z ciastkiem to jest podkatalog)? Sama nazwa "refresh" nijak nie pasuje do fragmentów URLa, chyba żeby brać pod uwagę występowanie słowa w stringu.

Jeszcze jedno pytanie: dlaczego chcesz mieć path na "/refresh" (czy ogólnie: dlaczego osobny path) zamiast "/"?

komentarz 13 lipca 2021 przez Szyszka Gaduła (3,490 p.)
Ponieważ to jest tylko miejsce, do którego przekierowuje mój AuthGuard, kiedy odmówiono dostępu do zasobu, gdyż access token jest błędny. Wtedy przekierowuję mnie właśnie na /refresh, i stamtąd wysyłam token odświeżania do sprawdzenia przez serwer. Jeśli jest poprawny - tworzę przez set-cookie header access token w ciasteczku i z powrotem przekierowuję użytkownika na strone, do której nie miał dostępu. Więc to "/refresh" to jest tylko po to, żeby nie wysyłać refresh tokena w każdym żądaniu, bo wydaje mi się to dość niebezpieczne. Czyli żeby działało, muszę ustawić Path na "api/auth/refresh_token", tak? Ale teraz sobie myślę, że jeśli przeniosę backend na hosting i frontend też, to domena będzie inna. Obecnie u obu to localhost. I co w takiej sytuacji? Też ciasteczka nie będę się wysyłać? Jest na to sposób? :D
komentarz 13 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Czyli żeby działało, muszę ustawić Path na "api/auth/refresh_token", tak?

Tak wnioskuję po tym, co jest napisane w dokumentacji. :)

Ale teraz sobie myślę, że jeśli przeniosę backend na hosting i frontend też, to domena będzie inna. Obecnie u obu to localhost. I co w takiej sytuacji?

Za domenę dla ciastka odpowiada atrybut domain i - ogólnie dla requestów - CORS. Możesz w aplikacji ustawić zmienną środowiskową, gdzie na hostingu przypiszesz jej domenę hostingu jako wartość, a lokalnie - localhost.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 90 wizyt
pytanie zadane 12 czerwca 2020 w Sieci komputerowe, internet przez WiktroH Mądrala (6,550 p.)
+2 głosów
1 odpowiedź 180 wizyt
pytanie zadane 14 maja 2017 w Offtop przez Mr Popcorn Bywalec (2,340 p.)
0 głosów
1 odpowiedź 533 wizyt
pytanie zadane 20 października 2016 w PHP przez MatiiTv Gaduła (3,790 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...