私は公開のREST APIを作るために遊び2.4を使用しています。私はすべての起源とヘッダーを許可するCORSフィルタを追加しました。再生! 2.4:元のファイルからCORSを許可する方法://
はapplication.confから参照してください:
play.filters {
# CORS filter configuration
cors {
# The path prefixes to filter.
pathPrefixes = ["/"]
# The allowed origins. If null, all origins are allowed.
allowedOrigins = null
# The allowed HTTP methods. If null, all methods are allowed
allowedHttpMethods = null
# The allowed HTTP headers. If null, all headers are allowed.
allowedHttpHeaders = null
# The exposed headers
exposedHeaders = []
# Whether to support credentials
supportsCredentials = true
# The maximum amount of time the CORS meta data should be cached by the client
preflightMaxAge = 1 hour
}
}
私は古典的なブラウザ(クローム/ Firefoxがテストした)からAPIを呼び出すときに、私はすべて許可されてそれは関係なく、起源の、完全に正常に動作します。
しかし、私がコードバアプリケーション(cordovaアプリケーションでは、ajaxリクエストの起点はfile://
)を呼び出すと、CORSエラー:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'file://' is therefore not allowed access. The response had HTTP status code 403
が発生します。あたかも私が原点を許可しなかったかのようにファイル:// '
私はCORS(GET https://public.opencpu.org/ocpu/library/)が要求をブロックしたコーダバーではないかどうかをチェックすることができますが、うまくいきました。だから問題はPlayから来ていると思います。 ...
すべてのヘルプしてください
私はallowedOrigins = ["file://"]
を設定しようとしましたが、それはどちらか動作しませんか?
EDIT:これはCross origin GET from local file://の複製ではありません。ウェブサーバーはコーデックアプリケーションであるため、インストールできません。これらのファイルは、電話/タブレットファイルシステムからWebViewに提供されます。 これはPlayフレームワーク固有の質問です。以前のバージョンでは問題はありませんでした。おそらくデフォルトのCorsFilterは、原点ファイルを許可するように変更することができます://
EDIT 2:要求された後、私のカスタムスカラフィルタに使用する(非常に単純な)コードです。
私はこれを開発モードでのみ使用しており、いくつかの問題があることに注意してください。たとえば、実行時に例外がキャッチされない場合、フィルタは適用されないため、応答にはCORSヘッダーはありません。しかし、これがコードバアプリケーションのためのものなら、十分にうまくいくはずです。
コードバスの実装コードはどのように見えますか? – Justin
こんにちは、これは以下の複製です:http://stackoverflow.com/questions/8192159/cross-origin-get-from-local-file – Saar
@Saar私はあなたのためにそれを示しました:) –