2008-09-11 9 views
2

Ich möchte einen Ajax-Aufruf an einen anderen Server (gleiche Domäne und Box, nur einen anderen Port). z.Ajax und eine eingeschränkte uri

Meine Seite ist

 
http://localhost/index.html 

Ich möchte eine Ajax-GET-Anfrage machen:

 
http://localhost:7076/?word=foo 

Ich erhalte diese Fehlermeldung:

 
Access to restricted URI denied (NS_ERROR_DOM_BAD_URI) 

Ich weiß, dass Sie keine Ajax-Anfrage an eine andere Domain, aber es scheint, dass dies auch verschiedene Ports beinhaltet? Gibt es Workarounds?

Antwort

4

Haben Sie eine bestimmte Seite auf Ihrem Port 80 Server-Proxy-Anfragen an den anderen Port. Beispiel:

http://localhost/proxy?port=7076&url=%2f%3fword%3dfoo 

Beachten Sie die URL-Codierung für den letzten Abfragezeichenfolgenargumentwert.

1

Sie könnten JSONP verwenden. Hier geben Sie einen Rückruf mit der Anfrage an, die Antwort Ihrer ajax Anfrage wird mit dem Namen der Rückruffunktion umschlossen. Anstatt XmlHttpRequest zu verwenden, fügen Sie ein Tag mit der URL in das HTML-Dokument ein. Wenn dann die Antwort abgerufen wird, wird die Rückruffunktion aufgerufen, wobei die Daten als Parameter übergeben werden.

prüfen diese blog post out für ein Beispiel

0

Dies ist eine Browser-Beschränkung. Alle JavaScript-Aufrufe müssen sich auf demselben Server und demselben Port befinden wie das Skript. Dies erfordert etwas Server-Side, um herumzukommen. I.E. Lassen Sie den Prozess bei localhost die Anfrage an localhost:7076 weiterleiten.

0

Es saugt, aber es ist notwendig ... Grundsätzlich, was Sie tun müssen, ist Ihre AJAX-Anfrage über einen lokalen Proxy Proxy - einige Server-Seite Skript/Seite/was auch immer auf der gleichen Domain Sie sind - Empfangen Sie den Anruf und leiten Sie ihn an die andere Ressource Server-Seite weiter. Es könnte einige IFRAME-Tricks geben, die du tun könntest, aber ich denke nicht, dass sie sehr gut funktionieren ... könnte aber falsch sein, war eine Weile her.