Vue Firebase Verify ID Token CORS проблема - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь проверить идентификационный токен с помощью Firebase Admin SDK согласно инструкциям.Мой текущий код авторизации выглядит следующим образом (в Vue):

// Auth.vue, inside the firebaseui config callback
signInSuccessWithAuthResult: function(authResult, redirectUrl) {
      authResult.user
        .getIdToken(/* forceRefresh */ true)
        .then(function(idToken) {
          // Send token to your backend via HTTPS
          // ...
          console.log(idToken);
        })
        .catch(function(error) {
          // Handle error
          console.log(error);
        });

Логин работает нормально, и я могу получить authResult отлично.Тем не менее, похоже, что функция getIdToken является проблемой, так как я получаю следующую ошибку на моей консоли:

Cross-Origin Request Blocked: 
The Same Origin Policy disallows reading the remote resource at 
https://securetoken.googleapis.com/v1/token?key=AIzaSyApp5yu051vMJlNLoQ1ngVSd-f2k7Pdavc. 
(Reason: CORS request did not succeed).

В моем списке запросов одно зависание - это метод OPTIONS со следующими заголовками:

OPTIONS /v1/token?key=AIzaSyApp5yu051vMJlNLoQ1ngVSd-f2k7Pdavc HTTP/1.1
Host: securetoken.googleapis.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.8,pt-BR;q=0.5,de;q=0.3
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-client-version
Origin: http://localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Я даже не уверен, в чем проблема.Это идет со стороны Vue?Я использую его на сервере разработки (просто yarn serve, vue cli 3).Было бы решение, когда я запускаю Vue на производственном сервере, где я могу на самом деле настроить cors?

Любой свет по этому вопросу крайне приветствуется ... Спасибо !!

1 Ответ

0 голосов
/ 22 сентября 2018

Разобрался.Я звонил не туда.Помогло этот поток , который указал мне на Предварительно просвечиваемые запросы , то есть запрос OPTIONS:

"предварительно подсвеченные" запросы сначала отправляют HTTPзапрос методом OPTIONS к ресурсу в другом домене, чтобы определить, безопасно ли отправлять фактический запрос.Межсайтовые запросы предварительно просматриваются следующим образом, поскольку они могут иметь значение для пользовательских данных.

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

...