Reactjs React路由器redux和redux saga CORS请求问题
我正在尝试在一个基于核心UI的新React应用程序中实现身份验证,而在Angular 5中,我有一个使用另一个主题的旧功能版本 我试图按照教程进行操作,但它给了我一个错误: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源(原因:CORS标头) “访问控制允许来源”丢失) 每次我尝试登录时(而同一后端使用Angular) 我的后端配置如下所示:Reactjs React路由器redux和redux saga CORS请求问题,reactjs,redux,react-redux,redux-saga,react-router-redux,Reactjs,Redux,React Redux,Redux Saga,React Router Redux,我正在尝试在一个基于核心UI的新React应用程序中实现身份验证,而在Angular 5中,我有一个使用另一个主题的旧功能版本 我试图按照教程进行操作,但它给了我一个错误: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源(原因:CORS标头) “访问控制允许来源”丢失) 每次我尝试登录时(而同一后端使用Angular) 我的后端配置如下所示: Origins: "*", Methods: "GET, PUT, POST, DELETE", RequestHe
Origins: "*",
Methods: "GET, PUT, POST, DELETE",
RequestHeaders: "Origin, Authorization, Content-Type, X-Requested-With, Accept, Token",
ExposedHeaders: "",
我的Saga.js源代码是:从'reduxsaga/effects'导入{call,put,takeLatest}
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;
当我查看后端日志时,我只收到一个选项Rest请求,没有任何POST
你知道怎么解决这个问题吗?
谢谢你这个
选项
请求被称为飞行前请求
——你可以设置你的后端来处理这个选项
请求,然后发送一个状态代码为200
的响应。你必须为飞行前配置后端。添加一个选项
端点,并附加适当的访问控制允许原点
标题,以便我必须设置服务器来处理:选项
并使用状态代码200和访问控制允许原点
在https://myapp.url/v1
?