当前位置:网站首页>跨域解决方案
跨域解决方案
2022-08-05 00:49:00 【shewlong】
使用proxy解决跨域问题
问题引入
前端如果不通过proxy设置代理,则请求接口会报跨域问题
Access to XMLHttpRequest at 'https://www.baidu.com/s?ie=utf+-+8&mod=1&isbd=1&isid=28B087E526051712&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=this.$axios&fenlei=256&oq=this.%2524axios&rsv_pq=af3009be00003a79&rsv_t=1c5fWtMk%2B6xwWKQqibPt6DyyGzLEaQSdASvH93Q6UDEXyZdfGTnRxojuNms&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&bs=this.$axios&_ss=1&clist=&hsug=&f4s=1&csor=' from origin 'http://172.16.20.231:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决方案
1.在vue.config.ts中进行配置
//vue-cli3.0 里面的 vue.config.js做配置
devServer: {
proxy: {
'/cdn': {
target: 'https://position.csdnimg.cn', // 后台接口域名
ws: true, //如果要代理 websockets,配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, //是否跨域
pathRewrite:{
'^/cdn': '/'
}
}
}
}
2.在具体页面发送请求
假设要请求的后端地址为’https://position.csdnimg.cn/oapi/get’
//使用axios进行请求,首先在main.ts中将axios挂载到vue原型中
import axios from 'axios'
Vue.prototype.$service = axios
//在具体页面中使用this.$axios进行请求,原生未进行封装
this.$axios({
method: "get",
//上面的proxy会将url地址解析为https://position.csdnimg.cn/oapi/get
url: "/cdn/oapi/get",
params: {
// 这里是发送给后台的数据
},
}).then((response) => {
// 这里使用了ES6的语法
console.log(response); // 请求成功返回的数据
});
3.某些条件下可能需要对地址进行替换
var url = "https://position.csdnimg.cn/oapi/get"
var reg = /^http(s)?:\/\/(.*?)\//
// 必须是http开头或者https开头,结尾为'/'
// 把host替换成指定数值
var ToReplace = 'cdn/'
url.replace(reg, ToReplace)
// Host/cench
//*******************************************
如果只需要取出例如:position.csdnimg.cn,则通过以下方式
reg.exec(url)[2]
// www.cnblogs.com
边栏推荐
- CNI(Container Network Plugin)
- CNI (Container Network Plugin)
- GCC: Shield dependencies between dynamic libraries
- 软件测试面试题:设计测试用例时应该考虑哪些方面,即不同的测试用例针对那些方面进行测试?
- GCC:编译时库路径和运行时库路径
- Jin Jiu Yin Shi Interview and Job-hopping Season; Are You Ready?
- 3. pcie.v file
- 快速批量修改VOC格式数据集标签的文件名,即快速批量修改.xml文件名
- torch.autograd.grad求二阶导数
- E - Many Operations (bitwise consideration + dp thought to record the result after the operation
猜你喜欢
活动推荐 | 快手StreamLake品牌发布会,8月10日一起见证!
Theory of Software Fundamentals
软件基础的理论
If capturable=False, state_steps should not be CUDA tensors
gorm joint table query - actual combat
面试汇总:为何大厂面试官总问 Framework 的底层原理?
深度学习训练前快速批量修改数据集中的图片名
SV class virtual method of polymorphism
MongoDB搭建及基础操作
QSunSync Qiniu cloud file synchronization tool, batch upload
随机推荐
GCC: compile-time library path and runtime library path
Zombie and orphan processes
软件测试面试题:手工测试与自动测试有哪些区别?
leetcode: 266. All Palindromic Permutations
软件测试面试题:负载测试、容量测试、强度测试的区别?
Will domestic websites use Hong Kong servers be blocked?
tiup update
码率vs.分辨率,哪一个更重要?
MongoDB搭建及基础操作
Kubernetes 网络入门
LiveVideoStackCon 2022 Shanghai Station opens tomorrow!
4. PCIe 接口时序
活动推荐 | 快手StreamLake品牌发布会,8月10日一起见证!
软件测试面试题:黑盒测试、白盒测试以及单元测试、集成测试、系统测试、验收测试的区别与联系?
[idea] idea configures sql formatting
2022牛客多校训练第二场 J题 Link with Arithmetic Progression
2022 Multi-school Second Session K Question Link with Bracket Sequence I
DHCP的工作过程
gorm joint table query - actual combat
自定义线程池