問題の CORS についてはこちらをお読みください: http://enable-cors.org/
これが getMsg() メソッドで役立つかどうかを確認してください。
return Response.ok(output).header("Access-Control-Allow-Origin", "*").build();
上記が機能しない場合は、Jersey フィルターをサービスに追加してみてください。フィルター クラスを作成します。
package your.package;
public class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
return cresp;
}
}
そして、後で win web.xml を次のように登録します。
<servlet>
<servlet-name>CORS Filter</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>your.package.CORSFilter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CORS Filter</servlet-name>
<url-pattern>/webservices/*</url-pattern>
</servlet-mapping>
もう 1 つの解決策は、リソース内でこのコードを使用
OPTIONS
してブラウザーに提供することです。これを @GET があるクラスに入れます。
@OPTIONS
@Path("/getsample")
public Response getOptions() {
return Response.ok()
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS")
.header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build();
}
これでうまくいかない場合は、
"*"
提供された「Access-Control-Allow-Origin」ヘッダーを、このリソースにアクセスするカスタム ドメインと交換してみてください。Ig これを from から呼び出す場合は、アスタリスクの代わりに次の
http://localhost::8080
ようなものを使用します。
("Access-Control-Allow-Origin", "http://localhost:8080")
"*"