私は2つの異なった上で(奉仕するのWebPACKを使用してアンギュラ4)私のバックエンド(JavaはTomcatのサーバ上ジャージーを使用)、フロントエンドをテストしていポート、したがって私はcorsアクセス制御の起源ブロックを取得しています。私のgetメソッドでは、すべて正常に動作し、要求されたデータはすべてUIで見つかります。今私は自分のPOSTメソッドをテストしていて、タイトルに同じメッセージが表示されています。理由:CORSヘッダー「アクセス制御 - 許可 - 起源」明示的にJavaリソースに次の特定にもかかわらず、行方不明
マイポストメソッドは、それに送られたデータを永続化し、新しい持続エンティティの位置で応答を返す必要があります。 Firefoxブラウザでの私のネットワークタブで
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response persistAccountLocation(AccountLocation entity) throws URISyntaxException {
accountLocationService.persist(entity);
JsonObject object = Json.createObjectBuilder()
.add("location", "api/v1/accounts_locations/"+entity.getLocation_id()).build();
return Response.status(Response.Status.CREATED)// 201
.entity("Location created")
.header("Access-Control-Allow-Origin","*")
.header("Access-Control-Allow-Methods", "POST,GET,PUT,DELETE")
.allow("OPTIONS")
.entity(object.toString()).build();
}
私は200個のステータス
Host: localhost:8081
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: access-control-allow-origin,content-type
Origin: http://localhost:4200
Connection: keep-alive
でなく、ポストが起こることはありませんされていることを後にOPTIONSを参照してください。私はCORSがその時点でブロックしていると仮定しています。リソースクラスの他にアクセス制御を許可する必要がある別の場所がありますか?私は、典型的なすべてのCORSの設定がサーバー側で行われていることを読んでいます。全く失われた。すべてのフィードバックは
EDIT
public class CORSResponseFilter
implements ContainerResponseFilter {
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS");
headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type,");
}
}
に感謝私は微調整とフィルタを作り、私のアプリにそれを登録し
public class JaxRsApplication extends ResourceConfig{
public JaxRsApplication() {
// register application resources - unmapped resources will throw exception
register(AccountLocationResource.class);
register(CORSResponseFilter.class);
}
もう一つ、私が気づきましたか? CORSを手作業で書くことはお勧めできません(実際にはサーバーに2つのリクエストが含まれます)。 –
@AlehMaksimovich jax-rsにジャージを使用する。それは私のコンテナです。少なくとも私はそう思う。この用語の私の理解は、私にはまだ新しいですhttps://jersey.github.io/ – overboard182
@ overboard182これを解決できましたか?はいの場合、どうですか? –