Я пытаюсь реализовать аутентификацию в новом приложении React на основе Core UI, тогда как у меня есть старая функциональная версия, использующая другую тему в Angular 5.
Я пытался следовать этому учебное пособие, но оно дает мне такую ошибку:
Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса на https://myapp.url (причина: заголовок CORS 'Access-Control-Allow-Origin 'отсутствует).
каждый раз, когда я пытаюсь войти (в то время как тот же самый бэкэнд работал с Angular).
Моя конфигурация бэкэнда следующая:
Origins: "*",
Methods: "GET, PUT, POST, DELETE",
RequestHeaders: "Origin, Authorization, Content-Type, X-Requested-With, Accept, Token",
ExposedHeaders: "",
и мой источник Saga.js: import {call, put, takeLatest} из 'redux-saga / Effects';
import { AUTH_REQUEST, AUTH_SUCCESS, AUTH_FAILURE } from './reducer';
const fetchJSON = (url, options = {}) =>
new Promise((resolve, reject) => {
return fetch(url, options)
.then(response => (response.status !== 200 ? reject(response) : response))
.then(response => response.json())
.then(response => resolve(response))
.catch(error => reject(error));
});
function* authorize({ payload: { login, password } }) {
const options = {
body: JSON.stringify({ login, password }),
method: 'POST',
headers: { 'Content-Type': 'application/json' ,
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers' : 'Origin, Content-Type, X-Requested-With, Accept'}
};
try {
//TODO: replace URL by a dynamic one
console.log(options.headers);
const { token } = yield call(fetchJSON, 'https://myapp.url', options);
yield put({ type: AUTH_SUCCESS, payload: token });
localStorage.setItem('token', token);
} catch (error) {
let message;
switch (error.status) {
case 500: message = 'Internal Server Error'; break;
case 401: message = 'Invalid credentials'; break;
default: message = 'Something went wrong';
}
yield put({ type: AUTH_FAILURE, payload: message });
localStorage.removeItem('token');
}
}
function* Saga() {
yield takeLatest(AUTH_REQUEST, authorize);
}
export default Saga;
Когда я просматриваю свои журналы бэкэнда,Я просто получаю запрос OPTION Rest без POST.
У вас есть идеи, как это исправить?Спасибо