2011-11-22 10 views
18

Ktoś wie, czy z jquery lub ogólnym javascript, mogę zmienić referrer z nagłówka w wywołaniu ajax ajax?Zmiana strony wywołującej Ajax POST

zasadniczo chcę, aby został wysłany z mojej strony, ale powinien mieć stronę odsyłającą z innej strony. Każda informacja byłaby świetna.

+0

Myślę, że to może być pomocne: http://stackoverflow.com/questions/220231/accessing-http-headers-in-javascript – mikeY

+0

Zwykle można wysyłać żądania tylko do własnej domeny. Dlaczego chcesz oszukać swój serwer zmieniający odnośnik? –

+0

Możliwy duplikat [set referer url z prośbą ajax] (http://stackoverflow.com/questions/8798706/set-referer-url-with-ajax-request) – user2284570

Odpowiedz

39

Przeglądarka będzie nadpisywać stronę odsyłającą zawsze dla testów, które zrobiłem. Oznacza to, że nie możesz zmienić strony wywołującej wywołania ajax.

+30

Dzięki Bogu, nie możesz;) –

+0

Czy mogę przynajmniej mieć pewność, że jeśli przeglądarka nie wyśle ​​odnośnika, moja zostanie wysłana? – xpy

+2

"Oznacza to, że nie można zmienić strony wywołującej wywołania ajaxowego" - cóż, z wyjątkiem skrzypka lub jakiejkolwiek innej rzeczy, która przychodzi pomiędzy przeglądarką a serwerem;) – Mtz

6

Możesz użyć .setRequestHeader('referer', 'foo'), ale nie jestem pewien, czy przeglądarka po prostu zastąpi ją właściwą, czy nie.

poprzez jQuery, metoda .ajax() pozwala także nagłówki (.get() i .post() nie)

Należy pamiętać, że istnieje bardzo niewiele punkt w ten sposób, ponieważ nie można zrobić AJAX między domenami, a nawet próbuje zrobić może to powodować reguły bezpieczeństwa XHR w niektórych przeglądarkach i po prostu zatrzymać żądanie w ogóle.

+1

przeglądarka zastąpi odnośnik: \ thanks though – fmsf

+0

Cholera I Chciałbym, żeby było to możliwe - ładuję "części" do nakładki, na przykład kliknięcie linku do edycji spowoduje wyświetlenie nakładki z formularzem edycji, zachowując jednocześnie listę elementów w tle. Chciałem zmienić stronę odsyłającą na URL "części", więc mogłem ją odebrać w następnej formie (abyś mógł kliknąć link, aby załadować kolejną stronę do nakładki, a link powrotny pokazałby poprzedni formularz). Niestety teraz muszę znaleźć inny sposób, aby to zrobić. +1 za wykonanie niektórych testów na ten temat. – ClarkeyBoy

+0

Nawet jeśli przeglądarka została zmieniona, jest to właściwie odpowiedź na pytanie, jak to zrobić. Obviolsy dobrze jest wiedzieć o funkcji przeglądarki, ale to nie znaczy, że nie można tego zrobić. Nie wiem, w jakim scenariuszu może to być konieczne, ale jestem zadowolony. Dzięki. – erm3nda

3

zawsze można użyć tego:

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("header key", "header value")} 
}) 

Ale oczywiście, przeglądarka może mieć inną opinię o nagłówku odsyłający. To powinno być przetestowane :)

+4

Zdecydowanie odrzucony przez Chrome [17.0.963.56]. Jeśli ktoś chce przetestować różne możliwości przeglądarki, ustawiłem parę jsFiddles: [jedną z 'jQuery.ajaxSetup'] (http://jsfiddle.net/patridge/h4Lvp/) i [jedną z opcją na pojedynczym' jQuery.ajax' call] (http://jsfiddle.net/patridge/amA3W/). – patridge