web-dev-qa-db-ja.com

クロスドメインAjaxリクエストを有効にするFirefox設定

一時的に一時的にXMLHttpRequestを許可する必要があります。 firefoxのセキュリティ設定を変更するのが方法のようです。しかし、私は this および this で試しましたが、それらは動作しませんでした。誰もこれを以前に設定できましたか?ありがとう。

47
Pablote

最新のブラウザの場合、次のアプローチを試すことができます。

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

要するに、次をSERVER応答ヘッダーに追加する必要があります(以下はfromfoo.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

X-PINGOTHERは、JavaScriptによって挿入されるカスタムヘッダーであり、サイトごとに異なる必要があります。

Ajaxでサーバーにアクセスするサイトが必要な場合は、*代わりに。


編集:

最初に2009で質問に答えたとき、実際に同じ問題にぶつかり、サーバー側の設定を使用してそれを回避しました。

FFまたはChromeまでにプラグインがありませんでした。

ただし、ブラウザ側のプラグインを使用する代替手段があります。tsdsの答えを確認してください

21
Walty Yeung

アプリの開発およびテスト中にクロスドメインの問題に時間を無駄にしたくない場合は、FFに対してアドオン Force CORS を使用できます。

更新:このアドオンはもう存在しないようです。しかし、別のオプションがあります-これ Chrome拡張

28
tsds

JQueryの ajax リクエストを使用してみましたか?バージョン1.3以降、jQueryは特定のタイプのクロスドメインAjaxリクエストをサポートしています。

上記の参照から引用:

注:「script」または「jsonp」がdataTypeの場合、(DOMスクリプトタグを使用してスクリプトをロードするため)すべてのリモート(同じドメイン上にない)リクエストをGETとして指定する必要があります。 XMLHttpRequestオブジェクトを必要とするAjaxオプションは、これらのリクエストでは利用できません。 completeおよびsuccess関数は完了時に呼び出されますが、XHRオブジェクトを受け取りません。 beforeSendおよびdataFilter関数は呼び出されません。

JQuery 1.2では、「myurl?callback =?」のようにJSONPコールバックを指定すると、別のドメインにあるJSONデータをロードできます。 jQueryは自動的に?を置き換えます正しいメソッド名を呼び出して、指定したコールバックを呼び出します。または、dataTypeを「jsonp」に設定すると、コールバックがAjaxリクエストに自動的に追加されます。

9
tvanfosson

クロスドメインXMLHttpRequestを「一時的に」無効にする方法はありません。一時的に無効にできる場合は、永続的に無効にできます。これはAJAXプログラミングの現代ではかなり一般的な問題であり、ほとんどの場合、クロスドメインスクリプティングとして知られる手法を使用して解決されます。

ここでの考え方は、クロスドメインスクリプトを呼び出すと、JavaScript(JSON)の結果が返され、その結果が関数に渡されるということです。

JavaScriptコードの観点からどのように見えるかを示すサンプルコードを次に示します。

  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);
      }
   }

次に、データを受け取るコードで関数を定義し、サーバーでコールバックケースを「処理」します。これがクライアント側JavaScriptです。

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

サーバー側では、ここでPHPの例を示していますが、これはJavaまたはサーバー側で何でも簡単に行うことができます技術は:

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

サーバー側で生成しているものは、クライアント側で実行されるJavaScriptであることに注意してください。

7
Michael

私はfile://からこれに直面しています。ローカルHTMLファイル(テストベッド)から2つのサーバーにクエリを送信したいと思います。

この特定のケースは安全上の問題ではありませんが、Safariのみがこれを許可します。

ここに 最良の議論 私はこの問題を発見しました。

2
akauppi

私もその「UniversalBrowswerRead」を使用しようとしましたが、うまくいきませんでした。 「allow」ヘッダーを追加できる可能性がありますが、実際にはまだ試していません。それはかなり新しいです。

より多くの情報を見つけることができます こちら

2
Steve Willard

Fiddlerをプロキシとして使用しました。 Fiddler localhost呼び出しを外部サーバーにリダイレクトします。

手動プロキシ(127.0.0.1ポート8888)を使用するようにFirefoxを構成しました。 Fiddlerは、URLフィルターを使用して呼び出しをキャプチャし、別のサーバーにリダイレクトします。

1
JoaquinG

Mod_proxyのようなものを使用するのはどうですか?その後、リクエストは同じサーバーに送信されるように見えますが、実際には別のサーバーに転送されています。

1
Sarel Botha

クロスドメインを許可するには:

  1. 入る about:config
  2. 注意することを受け入れる
  3. 入る security.fileuri.strict_Origin_policy検索バーで
  4. falseに変更します

これでタブを閉じることができます。通常、この設定でクロスドメインリクエストを作成できます。

詳細については here を参照してください。

0
theCode

Firefoxのアドオンを確認できます。最新のFirefoxバージョンでドメインを横断できます: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/

0
Tan Mai Van