2011-12-30 7 views
5

Próbuję wysyłać żądania z domeny w przeglądarce Safari w systemie Windows. Moja wersja Safari to 5.1.2.Zezwalanie na żądania w wielu domenach w Safari i Chrome? Odpowiedź serwera a argumenty wiersza poleceń

To jest pytanie klasyczne. Czytałem w wielu miejscach, że Chrome i Safari pozwala krzyżowe żądania domen tak długo, jak reaguje Server z followin nagłówka w odpowiedzi

Access-Control-Allow-Origin: * 

Czytałem ten artykuł. How to allow cross-domain requests in Safari? i wiele innych na stronie stackoverflow.

Jednak żadna z nich nie odpowiada na moje pytanie.

Mam problemy z Chrome i Safari wykonuję żądania AJAX między domenami, mimo że wysyłam niezbędny nagłówek z serwera.

W końcu uruchomiłem Chrome z "--disable-web-security". Potem zadziałało.

Moje pytania:

1) Co mam zrobić z Safari? Czy używam podobnego argumentu wiersza poleceń?

2) Co ważniejsze, mogę ktoś proszę mi powiedzieć, czy funkcjonalność cross-domain jest dozwolone w Chrome i Safari domyślnie tak długo jak serwer odpowiada z nagłówkiem czy też muszę się upewnić, że

a) serwer odpowiada z nagłówkiem

I

b) przeglądarka jest uruchamiany z odpowiednim argumentem.

+0

Istnieje wiele szczegółowych informacji, które sprawiają, że żądania w wielu domenach działają poprawnie. Wszystko zależy od rodzaju wniosku, który próbujesz wykonać. Czy możesz podać więcej szczegółów na temat swojej prośby? Możesz dowiedzieć się więcej o zgłaszaniu żądań CORS tutaj: http://www.html5rocks.com/en/tutorials/cors/ – monsur

Odpowiedz

4

Znalazłem problem. Czytanie więcej o CORS pomogło html5rocks.com/en/tutorials/cors. Zdałem sobie sprawę, że moje żądania powodują wywoływanie żądań preflightów (OPCJE), a serwer nie został skonfigurowany do prawidłowego obsłużenia tych żądań. Powodem, dla którego powodował on żądania inspekcji wstępnej, było to, że korzystałem z JQuery i dodawałem niestandardowy nagłówek do moich żądań. Zmodyfikowałem swój kod, aby zapobiec dodaniu tego dodatkowego nagłówka, a moje żądania nie wymagały już żądań wstępnych. Teraz nie muszę wyłączać bezpieczeństwa sieci i działa dobrze.

+2

Czy możesz dokładnie powiedzieć, jak zmodyfikowałeś swój kod? Co to był dodatkowy nagłówek? Być może mam dokładnie ten sam problem. – T3db0t

+0

Sprawdź powyższy link do dokumentacji cors. Sprawdź, czy żądania inspekcji wstępnej nie są potrzebne. Sprawdź swoją komunikację http przez firefug lub podobne narzędzie przeglądarki i sprawdź wszystkie nagłówki sekcji żądań http. – CEGRD

+2

To najwyraźniej nie niestandardowe nagłówki (X- *), ale nagłówek żądania Content-Type: "Jeśli ustawisz tę wartość na cokolwiek innego niż application/x-www-form-urlencoded, multipart/form-data lub text/plain you uruchomi żądanie inspekcji wstępnej. " Czy mogę powiedzieć, że to wszystko wydaje się głupie - gdzie jest uzasadnienie dla tego szaleństwa? – Marc

Powiązane problemy