IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue的proxy代理 -> 正文阅读

[JavaScript知识库]vue的proxy代理

一、跨域问题


????????当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。
????????出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。即便两个不同的域名指向同一个ip地址,也非同源。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。

同源策略限制内容有:

Cookie、LocalStorage、IndexedDB 等存储性内容
DOM 节点
AJAX 请求发送后,结果被浏览器拦截了


有三个标签是允许跨域加载资源:

<img src=XXX>
<link href=XXX>
<script src=XXX>


????????跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。????????

二、vue解决跨域问题

???使用proxy代理,这种方法本质上仍然遵循了同源政策,只是换了一个请求的思路,将请求移至了后端。

同源政策是浏览器层面的限制。那么,如果我们不在前端跨域,而将“跨域”的任务交给后端服务,那么就规避了同源政策了。

(1)在Vue2中,proxy代理請求配置:

/config/index.js
proxyTable: {
    '/film': {
        target: 'https://m.maizuo.com',
        changeOrigin: true,
        pathRewrite: {
            '^/film': ''
        }
    },
},
(2)axios 请求部分:? ? ?
axios.get('/film/gateway.......’).then((res)=>{....})

????????我们请求发送给devServer服务器,在由devServer服务器做一次转发,发送给数据接口服务器;请求发给devServer服务器不存在跨域(同源),而devServer请求是服务器与服务器之间,不存在跨域问题。这样就做到了http://localhost:8080//film/gateway请求https://m.maizuo.com/gateway的资源

(3)部署到nginx服务器,转发请求。

????????使用 nginx 反向代理实现跨域,是最简单的跨域方式。只需要修改 nginx 的配置即可解决跨域问题,支持所有浏览器,支持 session,不需要修改任何代码,并且不会影响服务器性能。

????????我们只需要配置nginx,在一个服务器上配置多个前缀来转发http/https请求到多个真实的服务器即可。

server {
    listen 80;
    server_name xxx.xxx.xxx.xxx;
    charset utf-8;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    client_max_body_size 75M;

    location /static {   
		alias /data/dist/static/;
	}
 
	location ^~/film/{       
		proxy_pass https://m.maizuo.com/;    #请求转向服务器
		add_header Content-Type "text/plain;charset=utf-8";
		add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Credentials' 'true';
		add_header 'Access-Control-Allow-Methods' 'GET, POST';	
	}
	location / {            
		root /data/dist/;    #根目录
		index index.html index.htm;     #默认页面,入口文件
	}

}

也可以先用vue搭建一个本地服务器运行打包后dist文件

1.npm install -g http-server

2.开启服务: ?http-server ./dist

3.会出现访问地址,浏览器预览即可

参考链接:

跨域的几种解决方案_dralexsanderl的博客-CSDN博客_跨域解决方案

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:40:34  更:2022-07-03 10:44:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:49:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码