私のリアクションアプリからリモートでホストされているWeb APIにアクセスする必要があります。サーバー側では、私は、クロスドメイン通信を許可するには、以下のなかった:'Access-Control-Allow-Origin'ヘッダーを設定できません
import javax.ws.rs.core.Response;
import com.mypackage.ResponseDto;
@Override
public Response fetch(String id, String env) throws ServiceException
{
ResponseDto res = new ResponseDto();
res = updateResp(id, env); // not important
return Response.ok().header("Access-Control-Allow-Origin","*").entity(res).build();
}
私は郵便配達からチェックすると、私はCORSを正しく以下のように設定ヘッダを参照することができます
access-control-allow-origin →*
content-type →application/json
date →Wed, 16 Aug 2017 11:07:16 GMT
server →web
transfer-encoding →chunked
しかし、私から同じエンドポイントにアクセスするとき反応するアプリのブラウザは以下のエラーで苦情を出します:
Fetch API cannot load http://myservices.com/myservice-app/services/ . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled
何が起こっているのですか?
編集#1 まだ同じエラーを参照してください変更するには、以下のなかった:
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")
.entity(response).build();
OPTIONSリクエスト(ブラウザはこの「プリフライト」リクエストとして送信するものです)への応答にヘッダーを追加する必要があります。GETまたはPOSTではありません。多分それは問題ですか? –
OPTIONS要求を受信したときのサーバの応答はどのようになりますか?これは次の要求の前に送信されます – Ferrybig
["要求されたリソースには" Access Control-Allow-Origin 'ヘッダがありません "] https://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-quest-resource) – Ferrybig