Express.js: политика CORS, блокирующая запрос Stripe API - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь отправить данные формы из React / Redux на локальный сервер Express.js.Однако я получаю ошибки CORS:

Access to XMLHttpRequest at 'http://localhost:4000/api/donate' from
 origin 'http://localhost:3000' has been blocked by CORS policy: Response
 to preflight request doesn't pass access control check: No 'Access-
Control-Allow-Origin' header is present on the requested resource.

VM6535:1 Cross-Origin Read Blocking (CORB) blocked cross-origin
 response http://localhost:4000/api/donate with MIME type text/html. See 
https://www.chromestatus.com/feature/5629709824032768 for more details.

createError.js:17 Uncaught (in promise) Error: Network Error
    at createError (createError.js:17)
    at XMLHttpRequest.handleError (xhr.js:87)

Это была первоначальная политика CORS, которую я установил, чтобы Express.js получал мои React Data:

// index.js in the backend project
let cors = require("cors");

const corsOptions = {origin : "http://localhost:3000/" }; // React app is on port 3000

router.post('/api/donate', cors(corsOptions), (req, res, next) => { ....

Я отправлял тестовую кредитную картупоручил Stripe с использованием строковых данных раньше, и это работало без ошибок.Единственное отличие состоит в том, что раньше я только отправлял данные, используя компоненты формы / ввода из react-stripe-elements, тогда как теперь я также отправляю некоторые данные из своего хранилища Redux.

Даже сейчас с этой ошибкой Stripe по-прежнему отвечает частичным токеномданные (возможно значения по умолчанию, не уверен).

Что-то не хватает в моей политике CORS?Я думал, что белый список localhost: 3000 исправил бы это, и это казалось.Но это все еще выдает ошибку выше.

1 Ответ

0 голосов
/ 20 декабря 2018

CORB - это новая политика, применяемая некоторыми браузерами.Это навязывает идею, вернул ли я то, что просил.поэтому, если вы отправляете ответ с заголовками JSON и получаете обратно текст / html, как это было в этом случае, Chrome сожрет ответ и выдаст вторую ошибку, которую вы видите.измените заголовки вашего контента на text / html, и это, вероятно, будет работать для вас.

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