Google Chrome Calling Express API - доступ к получению из источника 'http://localhost: 3000' заблокирован политикой CORS - PullRequest
0 голосов
/ 05 мая 2020

У меня есть API, написанный на Express / nodeJS, который размещен в GCloud. Cors средний износ включен и отвечает на запрос OPTIONS. Когда я пытаюсь вызвать API на локальном сервере, я могу получить доступ к API. Когда я пытаюсь получить доступ к API после развертывания, я получаю следующую ошибку:

Access to fetch at 'https://___.com/player' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Я вижу вызов OPTIONS в Chrome, и он возвращает следующие заголовки:

access-control-allow-methods: GET,HEAD,PUT,PATCH,POST,DELETE
access-control-allow-origin: *
alt-svc: clear
content-length: 0
date: Tue, 05 May 2020 18:40:13 GMT
status: 204
vary: Access-Control-Request-Headers
via: 1.1 google
x-powered-by: Express 

Мой запрос выглядит следующим образом:

accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
authorization: Bearer cache-control: no-cache
content-length: 31
content-type: text/plain;charset=UTF-8
origin: http://localhost:3000
pragma: no-cache
referer: http://localhost:3000/
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
sessionid: 
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36 

Мой вызов извлечения из React:

        const response = await fetch(
            'https://___.com/player',

            {
                method: 'patch',
                mode: 'cors',
                credentials: 'same-origin',
                headers: new Headers({
                    authorization: 'Bearer ' + appState.User.token,
                    sessionId: `${appState.SessionId}`,
                }),
                body: patch,
            }
        ); 

Любая помощь будет принята с благодарностью.

1 Ответ

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

Хорошо, так что полный день тестирования, и мы наконец-то в этом разобрались. Это вообще не была ошибка CORS, Chrome сообщал об этом как таковую, что вызывало путаницу. Кроме того, это работало при запуске через Fiddler.

Оказывается, методы в выборке чувствительны к регистру. замена патча на PATCH решила проблему.

...