2012-04-11 8 views
6

Dies ist eine Art von Cross-Domain-Problem, aber das Problem ist der Browser (Chrome) scheint nicht zu folgen, die Weiterleitung. Stattdessen wird nichts an den jQuery-Ajax-Aufruf zurückgegeben, und ich erhalte eine Fehlermeldung.jQuery Ajax Anruf an die Domain, die zu einer anderen Domain umleitet (wird nicht gefolgt)

Ich versuche, jQuery.ajax zu verwenden, aber die URL, die ich verwende, leitet zu einer anderen Domäne um. Wenn dies passiert, erhalte ich einen Fehler. Gibt es etwas Spezielles, das getan werden muss, damit der Browser der Weiterleitung folgt?

Ich habe bereits access-control-allow-origin: * in den Header der zweiten Domäne hinzugefügt, die umgeleitet wird.

+0

können Sie Ihren Code und den Fehler addieren Sie sehen? –

+0

Sie dürfen keine Daten von anderen Domains in Ihrem Ajax abrufen. –

Antwort

0

Die einzige Möglichkeit, einen domainübergreifenden Ajax-Aufruf zu erhalten, ist die Verwendung von jsonp.

Setzen Sie in jQuery Ihren .ajax() dataType auf 'jsonp'. Siehe hier: http://api.jquery.com/jQuery.ajax/

Es funktioniert immer noch nicht, wenn der Server, zu dem umgeleitet wird, nicht in der Lage ist, eine Antwort jsonp. Der Unterschied zwischen einer json-Antwort und einer jsonp-Antwort besteht darin, dass eine json-Antwort eine reine json-Zeichenfolge ist, während eine jsonp-Antwort der Code ist, der eine Funktion aufruft, die eine json-Zeichenfolge übergibt.

Ein nicht allzu schäbig Tutorial: http://remysharp.com/2007/10/08/what-is-jsonp/

Eine gute Diskussion: Can anyone explain what JSONP is, in layman terms?

+2

Cross-Domain-Ajax-Aufruf ist möglich mit Cross-Origin Resource Sharing (CORS) und Autor arbeitete mit dieser Technologie (wie er erwähnt "access-control-allow-Herkunft: *" Header.) – vadimk

+0

@ vadimk, Vielleicht können Sie eine Antwort liefern diesen Ansatz dann mit einbeziehen. Aber es scheint von der Post aus, dass das Problem auf der Client-Seite ist. Der Zugriffssteuerung-erlaubt-Ursprung-Ansatz mit CORS ist auf der Serverseite. Selbst wenn der Server dies zulässt, erlaubte der Client dies nicht. Also JSONP. –

+0

Jonathan, schau dir meine Antwort an. Die Lösung besteht darin, sicherzustellen, dass die Weiterleitungsseite über die richtigen Antwortheader verfügt. – BigMacAttack

1

Ein HTTP-Redirect-Seite wird als jede andere HTTP-Seite in behandelt, dass sie auch die Zugriffssteuerheader muss. Wenn Ihre Weiterleitungsseite nicht über diese verfügt, wird der Browser nie dazu übergehen, zu prüfen, ob die Seite, auf die umgeleitet wird, die entsprechenden Berechtigungen besitzt.

Zusammen mit dem Location Header auf der Umleitungsseite, fügen Sie auch die Access-Control-Allow-Origin Header und den damit verbundenen Bestandteile (d Access-Control-Allow-Methods etc.)

+2

Es gibt eine Menge Theorie in Ihrer Antwort .. ein paar Zeilen Code zu illustrieren, was Sie sagen, wird nicht weh tun – abbood

Verwandte Themen