0

リクエストを通じてリモート Web サービスでデータを取得および設定する必要があるアプリを構築しています。jQuery GET リクエストを使用すると問題なく動作し、問題なくサービスからデータをリクエストできますが、PUT を使用するとエラーが発生します。

OPTIONS http://myurl.com 501 (サポートされていないメソッド ('OPTIONS'))

オプションhttp://myurl.com Origin null は Access-Control-Allow-Origin では許可されていません。

これを機能させるためにほとんど何でも試しましたが、うまくいきません。カスタム REST 要求を作成できる REST Console という chrome アプリをダウンロードしました。奇妙なことに、そのアプリを介してサーバーと対話できますが、javascript を介しては対話できません!

これはJavaScriptです:

$.ajax({
    url: 'http://myurl.com',
    type: 'PUT',
    data: '<time>16:00</time>',
    success: function(data) { alert(data); }
});

ここで何が起こっているのか誰か教えてもらえますか?

4

1 に答える 1

0

最初に、ファイル システムから直接ではなく、Web サーバーからスクリプトを実行するページを提供していることを確認します。

あなたのサービスhttp://myurl.comは、あなたのページが提供されているホスト名とは異なるホスト名にあると思いますか? この場合に機能させるには、Cross Origin Resource Sharingをサポートする HTTP ヘッダーを実装する必要があります。

サービスはhttp://myurl.comHTTPOPTIONSリクエストを処理する必要があります。そのレスポンスは、次のように一連の HTTP ヘッダー (コンテンツなし) である必要があります。

Access-Control-Allow-Origin: http://url-of-page-with-javascript/

Access-Control-Allow-Credentialsオプションで、 、Access-Control-Allow-Headersおよびも指定できますAccess-Control-Allow-Methods完全な仕様については、こちらを参照してください。

また、サーバーがリクエストに応答するときに、同じ値を持つ同じヘッダーを追加する必要があります。PUT明らかに、コンテンツもこの応答に含まれます。

于 2013-06-07T12:37:36.840 に答える