proxy跨域
跨域
浏览器访问非同源的网址时,会被限制访问,出现跨域问题.
解决方案:
2.JSONP 方式
3.全局对象+iframe
(1)document.domain+iframe的设置 (只有在主域相同的时候才能使用该方法):
设置document.domain值相同即可访问
(2)HTML5的postMessage(window.postMessage):
监听message事件,获取data
(3)使用window.name来进行跨域:
源页面的数据赋值给window.name、修改src使其与为请求页面同源页(window.name不变)、请求页拿到同源页的window.name(数据)
4.代理(proxy)
原理
服务器访问服务器没有跨域问题.所以,我们的做法是利用中间的代理浏览器向目标浏览器发请求.
代理方式配置
1.http-proxy-middleware
如下:利用node.js里面的express框架创建了一个服务器,并向目标服务器发送请求
1 // 引用依赖
2 var express = require('express');
3 var proxy = require('http-proxy-middleware');
4
5 // proxy 中间件的选择项
6 var options = {
7 target: 'http://www.example.org', // 目标服务器 host
8 changeOrigin: true, // 默认false,是否需要改变原始主机头为目标URL
9 ws: true, // 是否代理websockets
10 pathRewrite: {
11 '^/api/old-path' : '/api/new-path', // 重写请求,比如我们源访问的是api/old-path,那么请求会被解析为/api/new-path
12 '^/api/remove/path' : '/path' // 同上
13 },
14 router: {
15 // 如果请求主机 == 'dev.localhost:3000',
16 // 重写目标服务器 'http://www.example.org' 为 'http://localhost:8000'
17 'dev.localhost:3000' : 'http://localhost:8000'
18 }
19 };
20
21 // 创建代理
22 var exampleProxy = proxy(options);
23
24 // 使用代理
25 var app = express();
26 app.use('/api', exampleProxy);//注意,这里的"/api"不是必须写"/api"的,而是根据你请求的路径写的
27 app.listen(3000);
2.webpack或者vue-cli之类的devSever
同样是利用node.js创建一个本地服务器进行代理,只是配置方式有些微不同,更为简洁.以webpack.config.js的配置为例
devServer:{
proxyTable: {//高版本的是"proxy"
// 当你请求是以/api开头的接口,则我帮你代理访问到https://api.douban.com
'/api/*': {
target: 'https://api.douban.com', // 你接口的域名
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
pathRewrite: {
'^/api/old-path' : '/api/new-path', // 重写请求,比如我们源访问的是api/old-path,那么请求会被解析为/api/new-path
'^/api/remove/path' : '/path' // 同上
}
} }
}
3.nginx代理
简而言之就是用c语言创建一个服务器,和上面两张方式不一样.
4.whistle等调试工具
也是基于node实现的,功能复杂,操作简单.
总结:
代理跨域的主要方式是利用服务器请求服务器的方式避过跨域问题来实现的.大概的流程:浏览器===>代理服务器===>目标服务器.
主要手段两种:1.项目中的代码实现,利用node创建服务器.因为有代码在,所以就算不在本机上运行项目也可以实现跨域.
2.工具.以上提到的工具都是在本地手动创建一个服务器,然后再运行代码.所以当代码不在本地运行时还是会跨域,要重新配置.工具跨域更适合调试.
proxy跨域的更多相关文章
- proxy 跨域配置, 针对有axios的baseURL
1.首先主要的config文件下的index.js中的proxytable配置 proxyTable:{ '/proxy': { target:'http://192.168.2.141:8080', ...
- 前端本地proxy跨域代理配置
等了好久的接口,总算拿到了,结果却发现用本地localhost:9712去请求接口的时候,出现了跨域错误,而这个时候我们就需要进行下跨域配置了. 首先,找到项目中名为webpack.config.js ...
- devServer之proxy跨域
配置 注意:修改之后要重新运行一遍项目才行 devServer:{ contentBase:'./', proxy:{ // 当你请求是以/api开头的时候,则我帮你代理访问到http://local ...
- Webpack代理proxy配置,解决本地跨域调试问题,同时允许绑定host域名调试
Webpack代理proxy配置,解决本地跨域调试问题,同时允许绑定host域名调试 会撸码的小马 关注 2018.05.29 17:30* 字数 212 阅读 1488评论 0喜欢 2 接到上一章, ...
- Webpack devServer中的 proxy 实现跨域
Webpack dev server使用http-proxy解决跨域问题 文档资料 webpack关于webpack-dev-server开启proxy的官方介绍Vue-cli proxyTable ...
- vue cli+axios踩坑记录+拦截器使用,代理跨域proxy(更新)
16319 1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点建议方式 在main.js中如下声明使用 import axios from 'ax ...
- vue cli+axios踩坑记录+拦截器使用,代理跨域proxy
1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点 建议方式 在main.js中如下声明使用 import axios from 'axios'; ...
- axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器
1.小小的提一下vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一道 ...
- 前后端分离跨域 关于前后端分离开发环境下的跨域访问问题(angular proxy=>nginx )
前后端分离后遇到了跨域访问的问题: angular1中使用proxy很麻烦,最后还是失败结束:最后总结3种方法如下: 本人使用的第一种方法,只是开发环境下使用很方便! 1:禁掉谷歌的安全策略(Turn ...
随机推荐
- 深刻理解Spring声明式事务
问题引入 Spring中事务传播有哪几种,分别是怎样的? 理解注解事务的自动配置? SpringBoot启动类为什么不需要加@EnableTransactionManagement注解? 声明式事务的 ...
- [nowcoder5669E]Eliminate++
枚举$a_{i}$并判断是否可行,有以下结论:若$a_{i}$可以留下来,一定存在一种合法方案使得$a_{i}$仅参与最后若干次合并,且第一次参与合并前左右都不超过2个数 证明:将大于$a_{i}$的 ...
- [bzoj4650]优秀的拆分
由于字符串是AABB的形式,枚举AA和BB中间的位置,分别考虑AA和BB的数量,乘起来sigma一下即为答案以下考虑AA的情况(BB同理),枚举A的长度,然后按照这个长度分为若干块,那么每一个A一定可 ...
- 下载安装wps后去除监控
下载wps之后发现wps一直对我的电脑进行监控,占用着我的cpu和内存,我要把它清理出去.... 控制面板→管理工具→任务计划程序→任务计划程序库,有两个wps的任务计划,可以根据属性看到文件地址 C ...
- Codeforces 1067D - Computer Game(矩阵快速幂+斜率优化)
Codeforces 题面传送门 & 洛谷题面传送门 好题. 首先显然我们如果在某一次游戏中升级,那么在接下来的游戏中我们一定会一直打 \(b_jp_j\) 最大的游戏 \(j\),因为这样得 ...
- NOIOL #2 爆零记
没有假是真的爆零了,原因:万恶的文操.不管怎样写份题解吧. T1: 做题经历:看了下题发现:不是 edu 的原题吗?兴奋地拿出赛中写的程序搞上去. 大约比赛开始 30min 后开始发现 \(k\) 可 ...
- plyr包使用
#-------------------------------- # plyr包使用# 建议直接保存为R文件到Rstudio中运行 #-------------------------------- ...
- 金蝶EAS——登录某个数据中心门户时报错“获取用户相关信息失败!请查看服务器日志,并确认是否数据库设置错误或者版本不匹配!”
登录服务器后台,查看金蝶BOS控制台,选择数据中心中的目标数据中心,点击测试连接,提示报错如下: 说明是数据库问题,需要登录数据库服务器去检查数据库.详细操作见:
- linux sort 命令详解(转载)
转载:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html#3374576 sort是在Linux里非常常用的一个命令,管排序的 ...
- PHP识别二维码(php-zbarcode)
PHP识别二维码(php-zbarcode) 标签: php二维码扩展 2015-11-06 17:12 609人阅读 评论(0) 收藏 举报 分类: PHP(1) Linux 版权声明:本文为博 ...