从Vue中获取图片,是在后端获取,但获取图片url路径是前端的
http://localhost/dev-api/captchaImage
localhost:8080 是后端页面,路径中localhost 默认是localhost:80 端口属于前端页面,由于前后端端口不一样,为了防止跨域问题,使用反向代理,url请求前端进行代理,再映射到后端,解决跨域问题
在vue.config.js进行代理
# 若依管理系统/开发环境
VUE_APP_BASE_API = '/dev-api'
而在pathRewrite中路径重写将/dev-api换为 '' ,保留 captchaImage 再映射到
http://localhost:8080
http://localhost/dev-api/captchaImage
>
http://localhost/captchaImage
>
http://localhost:8080/captchaImage
后端就能接收到代理了
localhost:8080 是后端页面,路径中localhost 默认是localhost:80 端口属于前端页面,由于前后端端口不一样,为了防止跨域问题,使用反向代理,url请求前端进行代理,再映射到后端,解决跨域问题。而在pathRewrite中路径重写将/dev-api换为 '' ,保留 captchaImage 再映射到。从Vue中获取图片,是在后端获取,但获取图片url路径是前端的。在前端所有页面中,开发环境默认url为/dev-api。在vue.config.js进行代理。
Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、
反向代理
服务器,静态 web
Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第
二的 Rambler.ru 站点开发的一款服务器。2004 年 10 月发布第一个版本。
Nginx 的官网: http://nginx.org
国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了 Nginx。
https://www.netcraft.com/
正向代理隐藏真实客户端,
反向代理
隐藏真实服务端。
二、
反向代理
解决
的问题
反向代理
解决
的就是
跨域
,在前后端联调的情况下,前端有服务器,后端也有服务器,那么联调时,就存在
跨域问题
三、
反向代理
的原理
通过伪造请求使得http请求为同源的,然后将同源的请求发送到
反向代理
服务器上,由
反向代理
服务器去请求真正的url,这样就绕过直接请求真正的url导致
跨域问题
。
四、
反向代理
如何使用
在项目目录下cmd
安装axios与http-proxy-middleware模块
npm i axios -S
一、设置代理的原因
现在对前端开发的要求越来越高,并且随着自动化以及模块化的诞生,前后端开发模式越来越流行。后端只负责接口,前端负责数据展示、逻辑处理。但是前后端开发模式,有一个重要的问题,就是
跨域问题
。
二、如何配置webpack的代理
webpack代理需要另外一个插件:webpack-dev-server
webpack-dev-server配置代理非常的方便,只需要条件一个proxy属性,然后配置相关的参数就可以了:
var webpack = require('webpack');
var WebpackDevServer = require("webpack-dev-serv
跨域问题
来源于浏览器的同源策略。客户端和服务端不同IP不同端口都算
跨域
。
spring
boot
解决
跨域
有cros,配置就是那几项。
如果把服务端程序部署在nginx上,在nginx 也可以
解决
,服务端和nginx只用写一个即可,
server
listen 3002;
server_name localhost;
location /ok {
proxy_pass http://localhost:3000;
# 指定允许
跨域
的方法,*代表所有
add_header Access-Control-Allow-M
JSONP
JSONP(JSON with Padding)是利用浏览器对script的资源引用没有同源限制,通过动态插入一个script标签,当资源加载到页面后会立即执行的原理实现
跨域
的。
JSONP是一种非正式传输协议,具体做法是:用户传递一个callback参数给服务端。服务端返回数据时用cal
代码如下:
header(‘Access-Control-Allow-Origin:*’);
header(‘Access-Control-Allow-Headers:X-Requested-With’);
经过测试,webkit内核的浏览器成功实现
跨域
请求。
IE一如既往的不支持~看来只能在移动端享用这一强大功能了
另外,需要注意的是,第一行配置
中
的*表示允许来自所有referer的
跨域
请求,如果不想完全开放,可以配置为特定域名。这样就能保证只有来自特定域名的
在之前的分享的
跨域
资源共享的文章
中
,有提到要注意
跨域
时,如果要发送Cookie,Access-Control-Allow-Origin就不能设为*,必须指定明确的、与请求网页一致的域名。在此次项目开发
中
与他人协作
中
就遇到此类问题。
解决
思路
一般来说,与后台利用CORS
跨域
资源共享将Access-Control-Allow-Origin设置为访问的域名即可,这个需要后台的配合,且有些浏览器是不支持的。
基于与合作方后台的配合,利用nginx方向代理来满足浏览器的同源策略来实现
跨域
反向代理
概念
反向代理
(Reverse Proxy)方式是指以代理服务器来接受In
前端调用后端接口,将需要下载的图片https链接传给后端下载
后端需要设置响应头response.addHeader("Access-Control-Allow-Origin", "*"); 允许
跨域
前端需要设置 responseType: 'blob' 告诉后端前端需要的是blob二进制文件流,否则会导致返回乱码
前端发送请求调用后端自定义文件下载接口的代码可以参考:链接指引
Nginx作为
反向代理
服务器可以用来
解决
跨域问题
。通过将本地的URL前缀映射到需要
跨域
访问的Web服务器上,Nginx可以将HTTP请求转发到后端的真实服务器上,并通过rewrite命令去掉前缀。这样,真实的服务器可以正确处理请求,而不知道请求来自代理服务器。\[2\]
在Nginx的配置文件
中
,可以使用location指令来匹配需要
跨域
访问的路径,并在proxy_pass
中
填写需要访问的外域API地址。例如,当访问"http://localhost:8088/api/.*"路径时,可以将proxy_pass设置为"http://test.abc.com/",这样实际上访问的是"http://test.abc.com/.*",但在浏览器
中
显示的仍然是原来的路径"http://localhost:8088/api/.*"。需要注意的是,在匹配路径和代理路径的末尾都不能少斜杠,这是Nginx的规则。修改完nginx.conf文件后,需要重启Nginx才能生效。\[3\]
通过这种方式,Nginx可以实现
跨域
访问,
解决
了
跨域问题
。
#### 引用[.reference_title]
- *1* [Nginx
反向代理
解决
跨域问题
](https://blog.csdn.net/weixin_43066287/article/details/121104183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [ajax nginx 转发 sessionid_【Nginx】使用Nginx如何
解决
跨域问题
?看完这篇原来很简单!!...](https://blog.csdn.net/weixin_39954698/article/details/109917716)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [nginx
反向代理
解决
跨域
请求问题](https://blog.csdn.net/lm____/article/details/120462636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]