Я использую React 15.6.1, Axios, NGINX
. У меня проблема с CORS при входе в систему. Ниже показан логин ax ios POST
call
const additionalHeaders = {
code: action.payload,
page: 'login'
};
const loginData = yield call(() =>
axios(authorization, 'Basic', additionalHeaders).post(
URL + ACCESS_TOKEN_URL,
params
)
);
Ниже находится консоль ошибок
Access to XMLHttpRequest at '..../oauth/token' from origin 'http://localhost:3000'
has been blocked by CORS policy: Request header field sourcepage is not allowed by
Access-Control-Allow-Headers in preflight response.
utils.js:258 uncaught at tryLogin
at takeLatestHelper
at login
TypeError: Cannot read property 'data' of undefined
at login$ (webpack-internal:///./app/containers/Login/saga.js:137:43)
at tryCatch (webpack:///./node_modules/regenerator-runtime/runtime.js?:65:40)
at Generator.invoke [as _invoke] (webpack:///./node_modules/regenerator-runtime/runtime.js?:303:22)
at Generator.prototype.<computed> [as throw] (webpack:///./node_modules/regenerator-runtime/runtime.js?:117:21)
at next (webpack:///./node_modules/redux-saga/es/internal/proc.js?:289:32)
at currCb (webpack:///./node_modules/redux-saga/es/internal/proc.js?:387:7)
at eval (webpack:///./node_modules/redux-saga/es/internal/proc.js?:443:14)
..
..
xhr.js:160 POST .../aas/oauth/token net::ERR_FAILED
Ниже показано то, что я пробовал, но не работает.
У меня конфигурация NGINX. Я добавил параметры add_header
для Access-Control-Allow-Origin
# Always serve index.html for any request
location / {
add_header 'Access-Control-Allow-Origin' "*";
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
# Set path
root /var/www/;
try_files $uri /index.html;
}
И у нас есть 3 nodejs файлы middleWare frontendMiddleWare.js
, devMiddleware.js
, prodMiddleWare.js
Я добавил доступ ниже в fontendMiddleware
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
Я не смог найти больше solns на стороне клиента и все еще не могу решить проблему.
РЕДАКТИРОВАТЬ: Эта проблема появляется во второй раз. В первый раз я могу увидеть токен с ответом 200 и работать. Когда приложение загружается, когда я пытаюсь войти в систему, оно снова попытается получить токен. на этом этапе обнаруживается проблема CORS.