[play1]”is not allowed by Access-Control-Allow-Origin. “の回避

  playframework1

Ajaxでデータを取得する際、異なるドメインからの取得(クロスドメインリクエスト)は制限されるルールになっており、データ提供側の許可が必要。

提供側がヘッダーに許可範囲を返すことで実現する。
後から追加されたルールなので古いブラウザでは無視されてしまう。

responseオブジェクトのヘッダーに追加する方法

response.setHeader("Access-Control-Allow-Origin", "*");

専用メソッドを使用する方法

responseクラスには専用のメソッド(accessControl)が用意されているので、こちらを使う方がスマートだろう。
3種類の呼出方法が用意されている。コメントを自己流で訳してみた。間違っているかも。

  • public void accessControl(String allowOrigin)
  • public void accessControl(String allowOrigin, boolean allowCredentials)
  • public void accessControl(String allowOrigin, String allowMethods, boolean allowCredentials)
allowOrigin許可するドメインをカンマ区切りで指定する。無制限に許可する場合はアスタリスク “*” を設定する。
allowCredentialsクロスドメインリクエスト実行時にブラウザからクッキーを送信するか。許可ドメインが”*” 以外のときブラウザが尊重する。
allowMethods許可するHTTPメソッドをカンマ区切りで指定する。nullなら制限なし。

LEAVE A COMMENT