備忘録‎ > ‎

[playframework]"is not allowed by Access-Control-Allow-Origin. "の回避

Ajaxでデータを取得する際、異なるドメインからの取得(クロスドメインリクエスト)は制限されるルールになっている。
データ提供側の許可が必要。提供側はヘッダーに許可範囲を返すことで実現する。
後から追加されたルールなので古いブラウザでは無視されてしまう。
 
単純明快、responseオブジェクトのヘッダーに追加する方法。

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


responseクラスには専用のメソッド(accessControl)が用意されている。こちらを使う方がスマートだろう。
3種類の呼出方法が用意されている。コメントを自己流で訳してみた。間違っているかも。
 
allowOrigin:許可するドメインをカンマ区切りで指定する。無制限に許可する場合はアスタリスク "*" を設定する。
allowCredentials:クロスドメインリクエスト実行時にブラウザからクッキーを送信するか。許可ドメインが"*" 以外のときブラウザが尊重する。
allowMethods:許可するHTTPメソッドをカンマ区切りで指定する。nullなら制限なし。
 

public void accessControl(String allowOrigin)

public void accessControl(String allowOrigin, boolean allowCredentials)

public void accessControl(String allowOrigin, String allowMethods, boolean allowCredentials)

 
引数で指定しない呼出の場合、allowCredentials=falseallowMethods=null で解釈される。
 
 
Comments