2012-06-29 10 views
5

Znalazłem źródło mojego problemu dla SuperAgent (http://visionmedia.github.com/superagent/) w Firefoksie. Nie wiem, czy SuperAgent robi to w swoim wywołaniu AJAX, czy też uruchamia go FireFox.Jak uniemożliwić AJAX SuperAgent wywoływanie OPCJI?

Zasadniczo za każdym razem, gdy wykonuję wywołanie AJAX, metoda OPTIONS jest uruchamiana pod adresem URL przed faktycznym wywołaniem AJAX. Dość denerwujące, ponieważ serwer obecnie nie obsługuje OPCJE. Jak mogę nawiązać połączenie, jeśli nie będzie chciało się zepsuć i ponownie kodować serwera?

Dzięki

Odpowiedz

5

Ok dowiedziałem się więcej szczegółów. Na szczęście testowanie w Safari dało mi lepszy wgląd w to, co się naprawdę działo, i zastosowałem tutaj swoją wiedzę.

Wydaje się standardem, że przeglądarki wywołują metodę OPTIONS przed wykonaniem rzeczywistego wywołania AJAX. Wydaje się nieco apodyktyczny.

Aby obejść ten problem, po prostu dodałem funkcję catch-all na moim serwerze odwrotnego proxy, aby obsłużyć każde połączenie OPTIONS. Można zobaczyć na poniższe pytanie o kod:

Play! 2.0 easy fix to OPTIONS response for router catch-all?

A jeśli chcesz dowiedzieć się więcej o tym, dlaczego przeglądarek robią to, zobacz tutaj:

Why am I getting an OPTIONS request instead of a GET request?

OPTIONS jest od Standard CORS.

0

Wyłączenie funkcji web-secuty w phantomjs pomogło również rozwiązać ten problem (--web-security=no). Ponieważ nie miałem dostępu do serwera API, aby wprowadzić zmiany dla metody OPTION.

Powiązane problemy