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なら制限なし。 |