2016-02-28 16 views
7

KontekstHttps wnioski o zezwolenie nie działa poprzez Safari

wnioski XHR z nagłówka Authorization nad HTTPS (oba razem) nie docierają do serwera za pomocą Safari (iOS i MacOS). Ale działa z IE, Chrome i Firefox.

Używam ważnego certyfikatu wygenerowanego przez Letsencrypt, a przeglądarki nie wyświetlają ostrzeżeń na jego temat.

W internetowym inspektorze Safari, te XHRy próbują uzyskać wynik do czasu przekroczenia limitu czasu i nie wyświetlają żadnych błędów.

Mam jedną domenę i nie subdomeny.

test

  • nagłówek Authorization + HTTPS => Nie działa
  • nagłówek Authorization + Brak HTTPS (HTTP) => Prace
  • Brak nagłówka autoryzacja + HTTPS => Prace

Kod

Używam przechwytywacza do ustawienia nagłówka autoryzacji.

this.request = (config) => { 
    config.headers = config.headers || {}; 
    var authData = localStorageService.get('authorizationData'); 
    if (authData && config.url && !config.url.endsWith("/token")) { 
     config.headers = { 
      "Authorization": 'Bearer ' + authData.access_token 
     }; 
     config.withCredentials = true; 
    } 
    return config; 
} 

Czy ktoś napotkał te same problemy?

UPDATE 1

Jest coś nie tak z Safari + HTTPS + "zezwolenie" cel. Jeśli zmieni się nazwa "Autoryzacja" przez "MyHeader" i dokonam jakiejś modyfikacji na serwerze, aby pobrać mój token okaziciela za pomocą tokena "MyHeader", wszystko działa dobrze.

Czy hasło "Authorization" jest chronione przy użyciu HTTPS na safari?

+1

Czy zdarzyło Ci się ustalić, czy autoryzacja była chronionym hasłem w Safari? –

+0

Nie znalazłem nic na temat chronionych słów w Safari. –

+0

Odkryliśmy, co jest dla nas problemem. Jeśli spróbujesz użyć Safari na niezabezpieczonym certyfikacie (autorzy podpisu byli nam winni), Safari nie zezwoli ci na manipulowanie nagłówkiem Authorization. Nasze rozwiązanie polegało na zaufaniu samopodpisanemu certyfikatowi lub przejściu na normalny http (oba rozwiązania działały). Wydaje mi się, że twój problem był inny, chociaż –

Odpowiedz

5

Miałem też podobny problem z safari, gdzie "autoryzacja" w nagłówku nie została wysłana w żądaniu GET, ale skończyło się na prostej rzeczy.

Po prostu dodałem "/" na końcu adresu URL żądania i zadziałało to dla mnie.

na przykład: zmień adres URL z "/ token" na "/ token /".

Powiązane problemy