Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React路由器redux和redux saga CORS请求问题_Reactjs_Redux_React Redux_Redux Saga_React Router Redux - Fatal编程技术网

Reactjs React路由器redux和redux saga CORS请求问题

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

我正在尝试在一个基于核心UI的新React应用程序中实现身份验证,而在Angular 5中,我有一个使用另一个主题的旧功能版本

我试图按照教程进行操作,但它给了我一个错误:

已阻止跨源请求:同一源策略不允许读取 位于的远程资源(原因:CORS标头) “访问控制允许来源”丢失)

每次我尝试登录时(而同一后端使用Angular)

我的后端配置如下所示:

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