1. ホーム
  2. ajax

[解決済み] FirefoxでjQuery $.ajax(), $.post がREQUEST_METHODとして "OPTIONS "を送信する問題

2022-03-17 18:02:36

質問

比較的簡単なjQueryプラグインだと思っていたのに、トラブルが発生しています...。

このプラグインは、Ajax経由でPHPスクリプトからデータを取得し、オプションを <select> . Ajaxのリクエストはごく一般的なものです。

$.ajax({
  url: o.url,
  type: 'post',
  contentType: "application/x-www-form-urlencoded",
  data: '{"method":"getStates", "program":"EXPLORE"}',
  success: function (data, status) {
    console.log("Success!!");
    console.log(data);
    console.log(status);
  },
  error: function (xhr, desc, err) {
    console.log(xhr);
    console.log("Desc: " + desc + "\nErr:" + err);
  }
});

これはSafariでは問題なく動作するようです。 Firefox 3.5では REQUEST_TYPE は常に 'OPTIONS' となり、$_POST データは表示されません。 Apacheは、リクエストをタイプ'OPTIONS'としてログに記録します。

::1 - - [08/Jul/2009:11:43:27 -0500] "OPTIONS sitecodes.php HTTP/1.1" 200 46

なぜこのajax呼び出しはSafariでは動作するが、Firefoxでは動作しないのか、そしてFirefoxでこれを修正するにはどうすればよいのか?

レスポンスヘッダ
日付 Wed, 08 Jul 2009 21:22:17 GMT
サーバー:Apache/2.0.59 (Unix) PHP/5.2.6 DAV/2
X-Powered-By: PHP/5.2.6
コンテンツ長 46
キープアライブタイムアウト=15, max=100
接続 キープアライブ
コンテンツタイプ text/html

リクエストヘッダ
ホスト orderform:8888
ユーザーエージェント Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-US; rv:1.9.1) Gecko/20090624 Firefox/3.5
テキスト/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8を受け付けます。
Accept-Language en-us,en;q=0.5をサポート。
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
キープアライブ 300
接続キープアライブ
オリジン http://ux.inetu.act.org
アクセス制御-リクエスト-メソッド POST
アクセス制御-リクエスト-ヘッダ x-requested-with

以下は、Firebugの出力画像です。

解決方法は?

エラーの原因は、オリジンポリシーが同じだからです。独自ドメインへのXMLHTTPRequestしかできないのです。を使用できるかどうか確認してください。 JSONP コールバックの代わりに

$.getJSON( 'http://<url>/api.php?callback=?', function ( data ) { alert ( data ); } );