Zgodnie z żądaniami z poświadczeniami , Firefox wyśle poświadczenia wraz z postami międzydomenowymi tylko wtedy, gdy
invocation.withCredentials = "true";
jest ustawione… Ale nie wygląda na to, że API Ajax jQuery nie zapewnia do tego żadnego mechanizmu.
Czy jest coś, co przegapiłem? Czy mogę to zrobić w inny sposób?
javascript
jquery
cross-domain
David Wolever
źródło
źródło
Możesz użyć
beforeSend
wywołania zwrotnego do ustawienia dodatkowych parametrów (XMLHTTPRequest
obiekt jest do niego przekazywany jako jedyny parametr).Pamiętaj, że ten typ żądania międzydomenowego nie będzie działać w normalnym scenariuszu witryny, a nie w żadnej innej przeglądarce. Nie wiem nawet, jakie ograniczenia bezpieczeństwa nakłada FF 3.5, żebyś nie walczył głową o ścianę na darmo:
$.ajax({ url: 'http://bar.other', data: { whatever:'cool' }, type: 'GET', beforeSend: function(xhr){ xhr.withCredentials = true; } });
Jeszcze jedna rzecz, na którą należy uważać, to fakt, że jQuery jest skonfigurowany tak, aby znormalizować różnice między przeglądarkami. Może się okazać, że dodatkowe ograniczenia są nakładane przez bibliotekę jQuery, które zabraniają tego typu funkcjonalności.
źródło
method: 'GET'
jest obsługiwany. api.jquery.com/jquery.ajaxW jQuery 3 i być może we wcześniejszych wersjach następująca prostsza konfiguracja działa również dla indywidualnych żądań:
$.ajax( 'https://foo.bar.com, { dataType: 'json', xhrFields: { withCredentials: true }, success: successFunc } );
Pełny błąd, który otrzymałem w Firefox Dev Tools -> zakładka Network (w zakładce Security dla pojedynczego żądania) to:
źródło