react+express实现跨域
1. 首先复习一下跨域的几种主要方式:
a. jsonp
b. cors
c. 代理服务(开发环境下常用)
2. 代理服务器:可实现转发请求。即浏览器在3000端口发出请求,通过代理转发,将请求发送给5000端口的服务;5000端口的服务处理后,将响应返回为3000端口。
create-react-app脚手架的开发环境自带代理服务器,只需手动配置以下代理转发的地址端口。在package.json文件中添加:
"proxy": "http://localhost:5000"
express的配置这里不再重复。
重启服务,ok.
2. express post()获取客户端传来的参数
参考:https://blog.csdn.net/HansExploration/article/details/80683448
app.js
+ var bodyParser = require('body-parser');
// ......
+ app.use(bodyParser.urlencoded({extended: true}));
在用到post方法的文件中,通过request.body获取请求数据。如:/routes/login.js
router.post('/', bodyParser.json(), function(req, res, next) {
if (req.body.username === '1234' && req.body.password === '1234' ) {
// ......
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面说一下,生产环境下的无跨域情况(前端和后端部署在一个服务器上)
1. 前端运行 npm run build, 生成build文件夹,复制该文件夹下的内容;
2. 后端:清空public文件夹下的内容,将复制的build文件夹下的内容粘贴于public文件夹下;
3. 启动后台, 浏览器打开相应的url。
=============================================================================================
生产环境实现跨域请求的方法: nginx反向代理
1. 为了区分前后端地址,给所有后台请求地址加上BASE="/api"
前端:

后台:

2. 前端代码npm run build
3. 更改nginx配置文件nginx.conf(最关键的一步!!!)
server {
# 端口号可以自己设定,不一定是80
listen ;
server_name localhost;
# 代理所有以/开头(除了下面的以/api开头外)请求,转发给3000端口
location / {
proxy_pass http://localhost:3000;
}
# 代理所有以 /api 开头的请求,转发给5001端口
location ~ /api {
proxy_pass http://localhost:5001;
}
}
4. 启动nginx. (在任务管理器中,可以看到启动的nginx进程)

5. 在浏览器中,输入localhost:80. nginx转发到3000端口上获取前端的内容,返回给前台进行显示;当点击按钮,涉及后端请求了,匹配到了/api,转发给5001端口,从后台获取响应,前台获得数据后进行重新渲染。
react+express实现跨域的更多相关文章
- React网络请求跨域代理设置
之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...
- 前后端分离框架前端react,后端springboot跨域问题分析
前后端分离框架前端react,后端springboot跨域问题分析 为啥跨域了 前端react的设置 springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必 ...
- Node+Express的跨域访问控制问题:Access-Control-Allow-Origin
问题一:项目A通过Ajax访问项目B的接口,获取json数据,项目B采用Node+Express技术栈.项目A可能遇到跨域访问控制问题. 问题二:vue-resource 能够跨域,一般使用jsonp ...
- vue+nodejs+express解决跨域问题
nodejs+express解决跨域问题,发现网上的大部分都是误导人,花了不少时间,终于弄懂了, 我在vue+nodejs+express+mongodb的项目里面,发现本地用vue代理正常调用远程的 ...
- react中的跨域问题
react中的跨域问题
- react+spring 记录跨域问题的解决方法
react 跨域访问后台,默认是有跨域问题,并且火弧和谷歌浏览器,对跨域问题展示还不一样. 谷歌浏览器如下图: 此处状态是200,然而在Response却没有任何信息,如下图 然而火弧浏览器,对该问题 ...
- express处理跨域问题,中间件 CORS
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 1.不用中间件的话可以这样写: app.all('*', func ...
- express 请求跨域后端解决方法CORS
CORS全称Cross-Origin Resource Sharing,是HTML5规范定义的如何跨域访问资源. Origin表示本域,也就是浏览器当前页面的域.当JavaScript向外域(如sin ...
- 【React + flask】跨域服务及访问
Flask from flask import Flask , request from flask_cors import * import flask import json import pic ...
随机推荐
- Python - 生成随机验证码的3种实现方式
生成6位随机验证码的3种实现方式如下: 1. 简单粗暴型:所有数字和字母都放入字符串: 2. 利用ascii编码的规律,遍历获取字符串和数字的字符串格式: 3. 引用string库. 方法1代码: i ...
- 蒲公英 · JELLY技术周刊 Vol.03
蒲公英 · JELLY技术周刊 Vol.03 「蒲公英」期刊全新升级--JELLY技术周刊!深度挖掘业界热点动态,来自团队大咖的专业点评,带你深入了解团队研究的技术方向. 登高远眺 天高地迥,觉宇宙之 ...
- java 8 lambda表达式中的异常处理
目录 简介 处理Unchecked Exception 处理checked Exception 总结 java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lam ...
- 阿里巴巴年薪800k大数据全栈工程师成长记
大数据全栈工程师一词,最早出现于Facebook工程师Calos Bueno的一篇文章 - Full Stack (需fanqiang).他把全栈工程师定义为对性能影响有着深入理解的技术通才.自那以后 ...
- Linux环境下,MongoDB 3.6.10 的安装步骤,以及设置用户和密码,配置随处执行mongo命令启动客户端,以及所遇到的问题
https://blog.csdn.net/qinaye/article/details/87920651 二.设置MongoDB用户和密码2.1 利用./mongo命令连接mongoDB客户端../ ...
- P1468 派对灯 Party Lamps(BIG 模拟)
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...
- 题目分享N
题意:有辆车,有r行,s*2列,在第s列和第s+1列之间有个过道,出口在第r+1行的过道处,现在给出每个人的位置(行号和列号),每人每次只能动一格,问最少耗费多长时间全员才能逃出去 分析:假如车上只有 ...
- [转载] IE8+兼容小结
本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...
- Redux在项目中的文件结构
React + Redux 今天我们来唠唠在React一般项目中,使用Redux进行状态管理的时候,相对的如何存放reducer.action.api之类文件的结构与使用时机吧.本章默认看官们已经 ...