веб-клиент не может получить доступ к заголовку авторизации при ответе - PullRequest
0 голосов
/ 13 июня 2019

Я выполняю вызов CORS GET на мой сервер, и мой веб-клиент не видит заголовок авторизации в ответе.

Я использую библиотеку axios для остальных вызовов:

getReturn: function() {
  axios
    .get(
      "http://<cors url>/test",
      {
        params: {
          captcha: this.token,
          shipperEmail: this.shipperEmail,
          salesOrder: this.ereturn.invoice,
          consigneeEmail: this.ereturn.consignee.email
        },
        headers: {
          Authorization: "Bearer " + this.token
        }
      }
    )
    .then(response => {
      console.log(response);
      this.token = response.headers.authorization.split(" ")[1];
    })
    .catch(error => alert("something went wrong " + error));
},

Когда я проверял инструменты разработчика Chrome, запросы OPTIONS и GET выполнялись успешно, а в ответе GET содержался нужный мне заголовок авторизации:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: http://<cors url>
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow-Credentials
Vary: Origin
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJpc3N1ZXJJZCI6Ii0xIiwiY291bnRyeSI6ImZha2UgY291bnRyeSIsInJvbGUiOiJTVEFGRiIsImFkZHJlc3MiOiJmYWtlIGFkZHJlc3MiLCJjaXR5IjoiZmFrZSBjaXR5IiwiaXNzIjoiZmFrZUNvbnNpZ25lZUBlbWFpbC5jb20iLCJza3VNYW5hZ2VtZW50IjpmYWxzZSwic3RhdGUiOiJmYWtlIHN0YXRlIiwidHlwZSI6IkNPTlNJR05FRSIsInBvcnRDb2RlIjoiZmFrZSBwb3J0IGNvZGUiLCJleHAiOjE1NjA0NzIyMTJ9.Z6HzgjPgg3sxJfxU9VCNIaTW6TDLnhNyrBDZqvAfhbM
Content-Type: application/json
Content-Length: 2163
Date: Thu, 13 Jun 2019 16:30:12 GMT

Клиент не может выполнить это:

response.headers.authorization.split(" ")[1];

с сообщением об ошибке something went wrong TypeError: Cannot read property 'split' of undefined

ВОПРОС: Почему мой код, работающий на клиенте, не может получить доступ к флагу заголовка авторизации, отображаемому инструментами разработчика?

спасибо

1 Ответ

0 голосов
/ 14 июня 2019

Моя проблема заключалась в том, что Access-Control-Expose-Headers неправильно настроен на веб-сервере:

Access-Control-Expose-Headers содержит список флагов заголовков, доступных для веб-клиента.Поэтому, чтобы решить эту проблему, мне просто нужно было изменить:

Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow-Credentials

на

Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow-Credentials,Authorization

В моей конфигурации tomcat

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