reactjs - React-Redux:使用 Redux 操作时的环回跨域错误
问题描述
我正在关注Rem Zolotykh 的这个视频教程。我遇到的问题是,在表单的 onSubmit() 中查询 LoopBack 服务器是可行的,并且使用具有相同查询的 Redux Action 会给我一个跨域错误。
LoopBack 服务器在 localhost:3000 运行
在 localhost:3001 运行的 React Webpack Server(我使用了 create-react-app)
以下 onSubmit 函数有效。请不要介意硬编码的东西,它只是用于测试。
--------------SignupForm.js-----------------
...
onSubmit(e) {
const user_data = { "email": "foo@bar.com",
"password": "xxx" };
axios.post('http://localhost:3000/api/Users/login', user_data)
.then((response) => {
auth_token = { headers: { 'Authorization': response.data.id } };
return axios.get('http://localhost:3000/api/empsecure', auth_token)
})
.then((response) => {
console.log('Queried Data:', response);
return axios.post('http://localhost:3000/api/Users/logout',{},auth_token)
})
.then((response) => {
console.log("logged out", response);
});
}
...
这是更改后的 onSubmit() 和 Redux Action:
--------------SignupForm.js-----------------
...
onSubmit(e) {
this.props.userSignupRequest(this.state);
}
...
-------------signupActions.js---------------
import axios from 'axios';
export function userSignupRequest(userData) {
return dispatch => {
const auth_token = {
headers: {'Authorization': 'BgKeyYGVWxx5ybl649jhiPiHpZAyACmV6d9hfJ5UAJxs1McR4RaqANBgwP8vEqiH'}
};
axios.get('http://localhost:3000/api/empsecure', auth_token)
.then((response) => {
console.log('Queried Data:', response);
return response
});
}
}
浏览器控制台给了我一个跨域错误,我明白了。但是为什么没有 redux 就可以工作呢?
解决方案
好的,在研究、上网和大量代码更改之后,
我发现在这种情况下需要它来防止 onSubmit() 的默认操作。
我认为它不喜欢页面重新加载。
现在工作。
onSubmit(e) {
e.preventDefault();
this.props.userSignupRequest(this.state);
}
推荐阅读
- xml - 如何使用 XSLT 替换 XML 节点名称中的字符 - 更改根元素
- reactjs - 反应本机日历标记日期
- java - 在 rest API 中应用 @OrderBy 注释而不是排序
- c++ - 使用输入 C++ 从 .txt 文件中打印 N 行
- list - HASKELL:将列表列表的第一个 x 元素添加到另一个列表中
- java - Java 中的正则表达式电子邮件验证问题
- c++ - 为什么是 std::array
::begin() 自 C++17 以来的 constexpr? - c - C - 显示指针内容。str 和 int 的区别
- postgresql - 如何使用 x IN y,其中 y 是整数列表或查询
- android - 我在运行 kotlin 项目时遇到这些错误