8

ドメインにスクリプトをロードし、その同じドメインにデータを送信しPOSTて使用しています。Ext.Ajax.request()

どういうわけか、開発ツールは、失敗したOPTIONSリクエストがあることを示しています。

Request URL : myurl-internal.com:8090/some/rest/api.php

Request Headers
  Access-Control-Request-Headers : origin, x-requested-with, content-type
  Access-Control-Request-Method  : POST
  Origin                         : http://myurl-internal.com:8090

これは HTTP であり、HTTPS ではありません。同じポート、同じホスト...なぜこれをしているのかわかりません。サーバーはそのようなものを処理できないため、リクエストは失敗し、システム全体が機能しなくなります。

4

3 に答える 3

10

これは Ext JS に固有のものではありません。他のフレームワークにまたがるこれらの関連スレッドを参照してください。これは、 CORS標準を適切に実施するサーバーです。

ユーザー データに副作用を引き起こす可能性のある HTTP リクエスト メソッド (特に、GET 以外の HTTP メソッド、または特定の MIME タイプでの POST の使用) の場合、仕様では、ブラウザがリクエストを「プリフライト」し、サポートされているメソッドをHTTP OPTIONS 要求ヘッダーを使用してサーバーに送信し、サーバーからの「承認」を受けて、実際の HTTP 要求メソッドを使用して実際の要求を送信します。

CORS を使用する場合は、サーバー上でこれらの要求を適切に処理または無視できる必要があります。Ext JS 自体は OPTIONS リクエストを気にしません -- 期待どおりにレスポンスを受け取りますが、何かをしない限り無視されます (サーバーが実際に何をしようとしても許可すると仮定します)。

CORS を使用するつもりがない場合 (意図的にクロスドメインに行っていないように思えます)、サーバーが元のドメインが異なると考える理由を理解する必要があります (それについてはよくわかりません)。JsonP を使用して (Ext の JsonP プロキシ経由で) CORS を完全にバイパスすることもできます。

于 2012-09-27T05:50:16.547 に答える
3

絶対 URL ではなく相対 URL を使用すると、期待どおりの結果が得られます。

于 2012-10-22T08:49:16.793 に答える
3

リクエスト前に使用

Ext.Ajax.useDefaultXhrHeader = false
于 2016-10-14T07:56:53.977 に答える