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

Ciasteczka i problem z Path

Fiszki IT
Fiszki IT
+2 głosów
79 wizyt
pytanie zadane 12 lipca w JavaScript przez Szyszka Gaduła (3,010 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 przez ScriptyChris Mędrzec (164,120 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 przez Szyszka Gaduła (3,010 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 przez ScriptyChris Mędrzec (164,120 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 przez Szyszka Gaduła (3,010 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 przez ScriptyChris Mędrzec (164,120 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ź 38 wizyt
pytanie zadane 12 czerwca 2020 w Sieci komputerowe, internet przez WiktroH Mądrala (6,550 p.)
+2 głosów
1 odpowiedź 133 wizyt
pytanie zadane 14 maja 2017 w Offtop przez Mr Popcorn Bywalec (2,340 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 20 października 2016 w PHP przez MatiiTv Gaduła (3,770 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

84,721 zapytań

133,527 odpowiedzi

295,919 komentarzy

55,997 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...