React跨域解决方案
什么是跨域?
跨域是由浏览器的同源策略限制导致的。同源策略用于限制一个源的 JavaScript 脚本和另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
同源就是两个 URL 的协议、主机、端口号都相同时,它们两个 URL 就是同源。
| URL | URL | 是否同源 | 结果 |
|---|---|---|---|
| http://www.dev.com | http://www.dev.com/index.html | 同源 | 协议、域名、端口号相同,只是路径不同 |
| http://www.dev.com | https://www.dev.com | 不同源 | 协议不同 |
| http://www.dev.com:80 | http://www.dev.com:9000 | 不同源 | 端口号不同 |
| http://www.dev.com | http://www.test.com | 不同源 | 主机不同 |
非同源限制
- 无法读取 Cookie、LocalStorage 和 IndexedDB
- 无法获取 DOM
- 无法发送 AJAX 请求
跨域解决方法
package.json
在 package.json 中添加 proxy
“proxy”: “https://qifu.baidu.com"
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
中间件代理 http-proxy-middleware
安装 http-proxy-middleware
yarn add http-proxy-middleware
创建文件 src/setupProxy.js,编辑为
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!