75

一連の安らかな Web サービスを開発しました。エラーのため、リモートクライアントからこれらのメソッドを呼び出すことができませんでした No 'Access-Control-Allow-Origin' header is present on the requested resource.

サービスは localhost で完全に動作します。問題を解決するためにサーバー側で行う変更または構成はありますか。つまり、クロスドメイン リクエストを有効にします。

WildFly 8、JavaEE 7 を使用しています

4

9 に答える 9

12

フィルターを使用せずに Wildfly で CORS を有効にするさらに簡単な (RestEasy 固有の) 方法と、リソース レベルで API 応答ヘッダーの構成を制御できる方法を見つけました。

例えば:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMemberList() {
    List<Member> memberList = memberDao.listMembers();
    members.addAll(memberList);
    return Response
            .status(200)
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
            .header("Access-Control-Allow-Credentials", "true")
            .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
            .header("Access-Control-Max-Age", "1209600")
            .entity(memberList)
            .build();
}
于 2014-08-08T15:03:41.920 に答える
4

javax.ws.rs.core.Feature以下のように実装して CORS を実装することもできます。

import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
import org.jboss.resteasy.plugins.interceptors.CorsFilter;

@Provider
 public class CorsFeature implements Feature {

  @Override
  public boolean configure(FeatureContext context) {
    CorsFilter corsFilter = new CorsFilter();
    corsFilter.getAllowedOrigins().add("*");
    context.register(corsFilter);
    return true;
 }

}
于 2016-12-06T11:47:56.090 に答える