エラー「Access-Control-Allow-Origin」を回避する方法。

はじめに

エラー:Access-Control-Allow-Origin について原因と対応策を調べたので、備忘。

Access-Control-Allow-Originが発生する原因

ブラウザの制約として、ドメインのサーバに対してajaxを通信 は許可されていないためでした。

【図解】 f:id:kmsyn1234:20170512103219p:plain

ただし、通常は許可されていないのであって、
「他のドメインからのajax通信を許可する」という設定をしてあげると回避することができます。

ドメインからのajax通信を許可する方法

HPPTレスポンスヘッダに「Access-Control-Allow-Origin」を許可する設定をしてあげるとOKになります。
Java(Jersey)の場合、こんな感じになります。

/**
 * サンプルHelloクラス。
 */
@Path("/sample")
public class SampleHello {

    /**
     * sayHelloメソッド。
     * @param res レスポンス情報
     * @return msg
     */
    @GET
    @Path("/hello")
    public String sayHello(@Context HttpServletResponse res) {
        // レスポンスに「Access-Control-Allow-Origin」をつけることで、
        // クロスドメインに対応。
        res.addHeader("Access-Control-Allow-Origin", "*");

        return "Hello, World!"
    }
}

【図解】 f:id:kmsyn1234:20170512105545p:plain

参考

developer.mozilla.org