Ограничения CORS, даже если заголовки применяются в серверной части Java - PullRequest
0 голосов
/ 05 мая 2018

Итак, у меня есть служба REST на основе Java EE, которая возвращает каждый запрос с этой функцией в дополнение к установке заголовков CORS:

protected Response.ResponseBuilder addRequiredHeaders(Response.ResponseBuilder rb) {
        return rb
                .header("Access-Control-Allow-Origin", "http://localhost:8080")
                .header("Access-Control-Allow-Credentials", "true")
                .header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE")
                .header("Access-Control-Allow-Headers", "Content-Type, *");
    }

Теперь, когда я делаю запрос от внешнего интерфейса, у меня все еще возникают некоторые проблемы, связанные с CORS. Вот код запроса от внешнего интерфейса

fetch (apiURL + "/api/rest/users/create", {
          body: JSON.stringify(payload),
          headers: {
            "content-type": "application/json"
          },
          method: "POST",
          mode: "cors",
        })
          .then((response) => {
                ...
          }.catch((err) => {
                ...
          }

Вот точное сообщение об ошибке:

Failed to load http://localhost:8888/java_ee_project/api/rest/users/create: 
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:8080' 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.

Вот некоторая дополнительная информация с вкладки сети в devtools из браузера

General    
    Request URL: http://localhost:8888/java_ee_project/api/rest/users/create
    Request Method: OPTIONS
    Status Code: 200 OK
    Remote Address: 127.0.0.1:8888
    Referrer Policy: no-referrer-when-downgrade
Response Headers    
    Allow: POST, OPTIONS
    Connection: keep-alive
    Content-Length: 13
    Content-Type: text/plain;charset=UTF-8
    Date: Fri, 04 May 2018 23:10:04 GMT
    Server: WildFly/11
    X-Powered-By: Undertow/1
Request Headers  
    Accept: */*
    Accept-Encoding: gzip, deflate, br
    Accept-Language: en-US,en;q=0.9
    Access-Control-Request-Headers: content-type
    Access-Control-Request-Method: POST
    Connection: keep-alive
    DNT: 1
    Host: localhost:8888
    Origin: http://localhost:8080
    Referer: http://localhost:8080/
    User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1

Когда я выполняю тот же запрос с Почтальоном, все работает нормально, поэтому я был бы очень рад любой помощи или информации об этой проблеме.

1 Ответ

0 голосов
/ 05 мая 2018

Каким-то образом решение с помощью добавленной функции responsebuilder не работает должным образом.

Используя второй параметр из http://www.codingpedia.org/ama/how-to-add-cors-support-on-the-server-side-in-java-with-jersey/ с фильтром ответа cors, он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...