Mam serwer z podstawowym uwierzytelnianiem HTTP i mam skrypt klienta, który zna nazwę użytkownika i hasło dla powyższego serwera HTTP. Korzystam z żądania XHR
i jest to setRequestHeader
, aby ustawić nagłówki Authorization. Ten bit pozwala uniknąć wyświetlania domyślnego okna logowania HTTP w przeglądarce.Ustawić nagłówki http na żądania generowane przez przeglądarkę?
request.setRequestHeader('Authorization', authInfo);
Jest to normalne dla AJAX żąda, ale w przypadku chcę pobrać plik ze wspomnianym serwerze i jestem zmuszony iść bez AJAX i użyć czegoś podobnego window.location.href
z JavaScript gdzie przeglądarka tworzy sam wniosek. Ponieważ to żądanie nie będzie zawierać nagłówka Authorization (brwoser doda nagłówek Authorization dla każdego żądania automatycznie tylko po tym, jak wyświetli okno dialogowe logowania i zapisze bazę64 informacji o logowaniu dla rzeczywistego serwera) przeglądarka wyświetli okno dialogowe logowania HTTP, którego chcę uniknąć.
Czy istnieje sposób na ustawienie nagłówków na nie-ajaxowych: żądań utworzonych przez przeglądarkę?
Pamiętaj, że pliki cookie auth mogą być nadużywane w przypadku [ataków CSRF] (http://en.wikipedia.org/wiki/Cross-site_request_forgery) – user123444555621
Dzięki, to zadziałało. Niestety, nie mam interpretera skryptów po stronie serwera, więc nie mogę przejść w drugą stronę. – ggat
Tylko jedna uwaga dotycząca pierwszego podejścia, czy istnieje sposób przekazania użytkownika: hasło na przykład zakodowane w base64 lub coś podobnego. Myślę, że można to zrobić, wysyłając na przykład kodowany przez użytkownika base64 i hasło w adresie URL, dekodując ten ciąg po stronie serwera i przekierowując nowy adres URL za pomocą apache. Ponieważ jest to pobieranie, użytkownik nie zobaczy odkodowanego adresu URL na pasku adresu przeglądarki. Ale pytam, może istnieje natywny sposób, aby to zrobić. – ggat