3

ローカルホストの Camel インスタンスで HTTP リクエストを実行できるようにしたいと考えています (開発目的のためだけに、これが悪い習慣であることはわかっています)。今のところ、私は立ち往生しています:

 Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.

そのようなリクエストを許可するよう Camel に指示する方法を検索しましたが、答えが見つかりませんでした。camel-cxf と rsServer を使用してエンドポイントを作成しています。

私はそのようなエンドポイントを持っています:

public class LoginEndpoint {
    @GET
    @Path(LOGIN)
    @Produces(MediaType.APPLICATION_JSON)
    public Customer login(@QueryParam("email") String email, @QueryParam("password") String password) {
        return null;
    }
}

標準ルートよりも仕事をしています。

Camel (または JAX-RS、または CXFRS コンポーネント、私にはわかりません...) に Cross Domain Requests を許可するように指示するにはどうすればよいですか?

4

2 に答える 2

6

エンドポイントに注釈を追加する必要があります

@CrossOriginResourceSharing(allowAllOrigins = true, allowAnyHeaders = true)
public class LoginEndpoint {
    @GET
    @Path(LOGIN)
    @Produces(MediaType.APPLICATION_JSON)
    public Customer login(@QueryParam("email") String email, @QueryParam("password") String password) {
        return null;
    }
}

注釈は camel-cxf にあるため、新しい依存関係は必要ないと思います。ただし、providers タグを使用して、Camel にこのアノテーションを探すように指示する必要があります。

<cxf:rsServer id="login" address="your adress"
        serviceClass="LoginEndpoint">
    <cxf:providers>
        <bean class="org.apache.cxf.jaxrs.cors.CrossOriginResourceSharingFilter" />
    </cxf:providers>
</cxf:rsServer>

その後、問題はありません (ただし、これはローカル テスト用であることを忘れないでください)。

于 2012-09-21T08:29:06.090 に答える
0

CXF 3.1.9 を使用している場合は、cxf-rt-rs-security-cors jar にあります。

<jaxrs:server id="apiRS" address="/api">
    <jaxrs:serviceBeans>
            <bean class="com.ak.util.APIRSController"></bean>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter" />
    </jaxrs:providers>
</jaxrs:server>

残りの部分

@CrossOriginResourceSharing(allowAllOrigins = true)
public class APIController {

    @GET
    @Path("/status")
    public String status() {
        return "{\"Result\":\"OK\"}";
    }
}

セキュリティの詳細については、上記の注釈の allowOrigins およびその他のパラメーターを参照してください。

于 2016-12-26T14:08:04.393 に答える