it-swarm.com.de

Firefox-Einstellung zum Aktivieren der domänenübergreifenden Ajax-Anforderung

Ich muss temporally domänenübergreifend XMLHttpRequest zulassen. Das Ändern der Firefox-Sicherheitseinstellungen scheint der richtige Weg zu sein. Aber ich habe es mit this und this versucht, aber sie haben nicht funktioniert. Hat das schon mal jemand konfigurieren können? Vielen Dank.

47
Pablote

Bei modernen Browsern können Sie den folgenden Ansatz versuchen:

https://developer.mozilla.org/de/HTTP_access_control

Kurz gesagt, müssen Sie Folgendes in den Antwortheader SERVER einfügen (der folgende Zugriff erlaubt vonfoo.example):

Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER
Access-Control-Max-Age: 1728000

Beachten Sie, dass X-PINGOTHER die benutzerdefinierte Kopfzeile ist, die von JavaScript eingefügt wird und von Site zu Site unterschiedlich sein sollte.

Wenn Sie möchten, dass eine Site in Ajax auf Ihren Server zugreifen kann, verwenden Sie stattdessen *.


Bearbeiten:

Als ich die Frage zum ersten Mal mit 2009 beantwortete, traf ich tatsächlich das gleiche Problem und arbeitete mit der serverseitigen Konfiguration um.

Bis dahin gab es kein Plugin für FF oder Chrome.

Nun gibt es jedoch Alternativen, die das Browser-seitige Plugin verwenden. Bitte überprüfen Sie die Antwort von tsds.

21
Walty Yeung

Wenn Sie bei der Entwicklung und beim Testen Ihrer App nicht nur Ihre Zeit mit domänenübergreifenden Problemen verschwenden möchten, können Sie das Addon Force CORS for FF verwenden.

UPDATE: Es scheint, dass dieses Addon nicht mehr existiert. Es gibt aber noch eine andere Option - diese Chrome-Erweiterung

28
tsds

Haben Sie es mit jQuery ajax request versucht? Ab Version 1.3 unterstützt jQuery bestimmte Arten von domänenübergreifenden Ajax-Anforderungen.

Zitat aus der Referenz oben:

Hinweis: Alle Remote-Anforderungen (nicht in derselben Domäne ) Sollten angegeben werden als GET, wenn 'script' oder 'jsonp' die .__ ist. dataType (weil es Script mit einem DOM-Script-Tag lädt). Ajax-Optionen das erfordert ein XMLHttpRequest-Objekt stehen für diese Anfragen nicht zur Verfügung . Die vollständigen und Erfolgsfunktionen sind nach Abschluss aufgerufen, aber nicht ein XHR-Objekt empfangen; das vorsenden und dataFilter-Funktionen sind nicht namens.

Ab jQuery 1.2 können Sie JSON .__ laden. Daten in einer anderen Domäne, wenn Sie Geben Sie einen JSONP-Callback an. Dies kann .__ sein. so gemacht: "myurl? callback =?" . jQuery ersetzt automatisch das? mit dem richtigen Methodennamen zum Aufruf den angegebenen Rückruf aufrufen. Oder, wenn Sie den Datentyp auf "jsonp" setzen, a Rückruf wird automatisch hinzugefügt auf Ihre Ajax-Anfrage.

9
tvanfosson

Hier ist die Sache, es gibt keine Möglichkeit, domänenübergreifend XMLHttpRequest "temporär" zu deaktivieren. Wenn Sie es temporär deaktivieren können, kann es dauerhaft deaktiviert werden. Dies ist in der heutigen Zeit der AJAX -Programmierung ein häufiges Problem und wird meistens mit der als Cross-Domain-Scripting bekannten Technik gelöst. 

Der Grundgedanke dabei ist, dass, wenn Sie ein domänenübergreifendes Skript aufrufen, JavaScript-Ergebnisse (JSON) zurückgegeben werden, die dann an eine Funktion an Ihrem Ende übergeben werden. 

Hier ist ein Beispielcode, der veranschaulicht, wie er aus der Perspektive des JavaScript-Codes aussehen kann:

  function request_some_data() {
    var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc";

      try {
        try{
          document.write("<scr"+"ipt type='text/javascript' src='"+s+"'></scr"+"ipt>");
        } 
        catch(e){
          var x = document.createElement("script");
          x.src = s;
          document.getElementsByTagName("head")[0].appendChild(x);
        }
      }
      catch (e) {
        alert(e.message);
      }
   }

Sie definieren dann eine Funktion in Ihrem Code, die die Daten empfängt, und auf dem Server "behandeln" Sie den Callback-Fall. Hier ist das clientseitige JavaScript:

function myfunc(data) {
  alert(data);
}

Und auf der Serverseite gebe ich hier ein PHP -Beispiel. Dies kann jedoch genauso einfach in Java ausgeführt werden. Was auch immer Ihre serverseitige Technologie ist:

<?php
   if($_GET["callback"]) {
     print($_GET["callback"] . "(");
   }
   /* place your JSON object code/logic here */
   if($_GET["callback"]) {
     print(");");
   }
 ?>

Beachten Sie, dass das, was Sie auf der Serverseite generieren, JavaScript ist, das auf der Clientseite ausgeführt wird.

7
Michael

Ich stehe vor dem file://. Ich möchte Abfragen von einer lokalen HTML-Datei (einer Testbed) an zwei Server senden.

Dieser spezielle Fall sollte keine Sicherheitsbedenken sein, aber nur Safari lässt dies zu.

Hier ist die beste Diskussion , die ich von der Ausgabe gefunden habe.

2
akauppi

Ich habe auch versucht, diese 'UniversalBrowswerRead'-Sache zu verwenden, und es hat nicht funktioniert. Möglicherweise können Sie einen "Zulassen" -Header hinzufügen, aber ich habe es bisher noch nicht versucht. Es ist ziemlich neu.

Weitere Informationen finden Sie hier

2
Steve Willard

Ich habe Fiddler als Proxy benutzt. Fiddler leitet Localhost-Aufrufe an einen externen Server um.

Ich habe Firefox für die Verwendung des manuellen Proxy (127.0.0.1 Port 8888) konfiguriert. Fiddler erfasst die Anrufe und leitet sie mithilfe von URL-Filtern an einen anderen Server weiter.

1
JoaquinG

Was ist mit so etwas wie mod_proxy? Dann sieht es in Ihrem Browser so aus, als würden die Anfragen an denselben Server gehen, aber sie werden wirklich an einen anderen Server weitergeleitet.

1
Sarel Botha

So erlauben Sie die Cross-Domain:

  1. geben Sie about:config ein.
  2. akzeptiere, um vorsichtig zu sein
  3. geben Sie security.fileuri.strict_Origin_policy in die Suchleiste ein
  4. zu falsch wechseln

Sie können jetzt die Registerkarte schließen. Normalerweise können Sie jetzt domänenübergreifende Anfragen mit dieser Konfiguration vornehmen.

Siehe hier für weitere Details.

0
theCode

Sie können meine Add-on für Firefox überprüfen. In der neuesten Firefox-Version können Domänenübergreifend verwendet werden: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/

0
Tan Mai Van