2011-07-25 11 views
5

Muszę wykonać wywołanie POST (z parametrem) do formularza asp, który znajduje się na innym serwerze.połączenie między domenami AJAX

Dla rozwoju zrobiłem to na tym samym serwerze i działa idealnie, ale teraz testuję go na innym serwerze, a zamiast otrzymywać status 200, otrzymuję status 0.

Myślę, że to dlatego, że jest to połączenie między domenami AJAX, to jedyna rzecz, która się zmieniła. Jak mogę wykonać to połączenie? Czy istnieje jakiś plik, który mogę umieścić na serwerze/kliencie, aby umożliwić to połączenie (jak flash, ...)?

Dziękujemy!

+0

dla dalszej pomocy możemy potrzebować znać numer wywołania ajax – dvhh

Odpowiedz

7

Tak, zakładając, że można zmienić serwer łączysz się

Można wdrożyć Cross Origin Resource Sharing (CORS)

Trzeba serwer powrócić Access-Control-Allow-Origin: * jeśli chcesz, aby wszystkie domeny do dostępu, inaczej powrócić Access-Control-Allow-Origin: http://yourdomain.com

Jeśli nie możesz zmienić serwera, z którego uzyskujesz dostęp, musisz użyć serwera proxy na serwerze, z którego pochodzi twój skrypt - ewentualnie sprawdź, czy opublikowali interfejs API, aby zwrócić np. JSONP

Więcej szczegółów tutaj

i kilka linków po prawej to kwestionuje

+1

wsparcie wydaje się dość ograniczone w tej chwili. – dvhh

+0

Spojrzałem na twój link, ale nie mogę znaleźć miejsca, w którym powinienem zadeklarować wszystkie "Access-Control-Allow-Origin", ... – J4N

+0

@dvhh - jest obsługiwane przez większość nowoczesnych przeglądarek, np. FF3.5 + , Safari5, IE8 + (używając XDR) – mplungjan

0

Można utwórz skrypt proxy lub użyj jsonp. Łatwiejszym kursem byłoby użycie skryptu proxy na serwerze.

+0

Niestety, nie jestem w stanie zmodyfikować niczego na serwerze – J4N

+0

innym rozwiązaniem byłoby przepisanie twoje wywołanie ajax do użycia iframe zamiast tego (niestety jest to trochę doggy) – dvhh

+0

@dvhh ale będzie mógł tylko wysyłać dane, nie otrzymywać żadnej odpowiedzi – mplungjan