React Ajax 请求给出 CORS 错误但 returns 数据
React Ajax Request gives CORS error but returns the data
我正在尝试发出 GET 请求,通过 POSTMAN 可以正常工作,但在 React 上似乎不起作用。
出于某种原因,尽管存在 CORS 错误,它还是 returns 数据。如何修复?
API 负载:
index.js(Redux 设置)
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './App';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import ReduxPromise from 'redux-promise';
import thunk from 'redux-thunk';
import createHistory from 'history/createBrowserHistory'
import { ConnectedRouter, routerReducer, routerMiddleware, push } from 'react-router-redux'
import {assumeRole} from './libs/awsLib';
import './index.css';
import reducers from './reducers';
import {LOGIN, LOGOUT} from "./actions/UsersActions";
import {api} from "./actions/api";
const history = createHistory();
const myRouterMiddleware = routerMiddleware(history);
const createStoreWithMiddleware = applyMiddleware(ReduxPromise, thunk, myRouterMiddleware)(createStore);
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);
FileListReducer
import {GET_DOCUMENTS} from "../actions/index";
export default function(state = [], action) {
//reducers should return a new object, never mutate the current state
switch (action.type) {
case GET_DOCUMENTS:
return action.payload;
}
return state;
}
文件操作
import 'whatwg-fetch'
import {api} from './api';
import config from '../config.js';
export const GET_DOCUMENTS = 'GET_DOCUMENTS';
export function getDocuments() {
return (dispatch) => {
const request = api.fetch('warpig/document/?userId='+localStorage.getItem("id")).then((res) => {
dispatch({
type: GET_DOCUMENTS,
payload: {data: res, success: res.status == 200}
})
}, (err, data) => {
console.log(err, data);
});
}
}
我调用 getDocuments() 的方式
...
componentDidMount() {
this.getDocuments();
}
getPrograms() {
this.props.fetchPrograms();
}
...
function mapDispatchToProps(dispatch) {
return bindActionCreators({ fetchPrograms, uploads3, login, assignToken, getDocuments }, dispatch);
}
function mapStateToProps({ programs, fileUpload, auth, filesList }) {
return { programs, fileUpload, auth, filesList };
}
export default connect(mapStateToProps, mapDispatchToProps)(FileUpload)
主要问题是它通过 POSTMAN 工作,但当我通过 React 在浏览器上发出 HTTP GET 请求时不工作,尽管它正在返回数据,那么,可能是什么?
我正在尝试发出 GET 请求,通过 POSTMAN 可以正常工作,但在 React 上似乎不起作用。
出于某种原因,尽管存在 CORS 错误,它还是 returns 数据。如何修复?
API 负载:
index.js(Redux 设置)
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './App';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import ReduxPromise from 'redux-promise';
import thunk from 'redux-thunk';
import createHistory from 'history/createBrowserHistory'
import { ConnectedRouter, routerReducer, routerMiddleware, push } from 'react-router-redux'
import {assumeRole} from './libs/awsLib';
import './index.css';
import reducers from './reducers';
import {LOGIN, LOGOUT} from "./actions/UsersActions";
import {api} from "./actions/api";
const history = createHistory();
const myRouterMiddleware = routerMiddleware(history);
const createStoreWithMiddleware = applyMiddleware(ReduxPromise, thunk, myRouterMiddleware)(createStore);
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);
FileListReducer
import {GET_DOCUMENTS} from "../actions/index";
export default function(state = [], action) {
//reducers should return a new object, never mutate the current state
switch (action.type) {
case GET_DOCUMENTS:
return action.payload;
}
return state;
}
文件操作
import 'whatwg-fetch'
import {api} from './api';
import config from '../config.js';
export const GET_DOCUMENTS = 'GET_DOCUMENTS';
export function getDocuments() {
return (dispatch) => {
const request = api.fetch('warpig/document/?userId='+localStorage.getItem("id")).then((res) => {
dispatch({
type: GET_DOCUMENTS,
payload: {data: res, success: res.status == 200}
})
}, (err, data) => {
console.log(err, data);
});
}
}
我调用 getDocuments() 的方式
...
componentDidMount() {
this.getDocuments();
}
getPrograms() {
this.props.fetchPrograms();
}
...
function mapDispatchToProps(dispatch) {
return bindActionCreators({ fetchPrograms, uploads3, login, assignToken, getDocuments }, dispatch);
}
function mapStateToProps({ programs, fileUpload, auth, filesList }) {
return { programs, fileUpload, auth, filesList };
}
export default connect(mapStateToProps, mapDispatchToProps)(FileUpload)
主要问题是它通过 POSTMAN 工作,但当我通过 React 在浏览器上发出 HTTP GET 请求时不工作,尽管它正在返回数据,那么,可能是什么?