当前位置:网站首页>跨域网络资源文件下载
跨域网络资源文件下载
2022-08-01 09:50:00 【十玖八柒】
问题
正常情况下是无法发送跨域请求下载文件的。 以下载语雀为例:可以看到直接访问下载地址会报跨域错误
解决
这个时候我们就可以通过nginx配置代理转发请求完成下载:
location ^~ /yuque/ {
proxy_pass https://app.nlark.com/yuque-desktop/;
}
说明:当我们像本地发送
/yuque/
的请求时,nginx会转发请求(注意:末尾必须要加/
不然就是代理请求,加了后才是转发请求),会将/yuque/
转发成下面的https://app.nlark.com/yuque-desktop/
然后我们重新写下载请求:
var xhr = new XMLHttpRequest();
xhr.open("GET", "/yuque/1.1.4/Yuque-1.1.4.exe", true);
xhr.send();
这次我们不直接访问语雀下载地址了,而是访问我们的本地地址,然后nginx会将我们的请求进行转发,将
/yuque/
转发为https://app.nlark.com/yuque-desktop/
,那么转发后的请求就变成了https://app.nlark.com/yuque-desktop/1.1.4/Yuque-1.1.4.exe
。由于我们并没有直接对下载地址进行请求,而是请求的本地地址,通过nginx进行代理转发请求,因此自然不存在跨域问题(不理解的话,可以看我之前写的有关nginx反向代理的文章)
后记
由于nginx不是通过反向代理的而是进行转发代理请求的,这个过程中资源是经过了一次nginx服务器的,然后再由nginx将资源发送给请求方,因此这个过程是需要消耗nginx所在服务器流量的。
边栏推荐
- Shell:条件测试操作
- [Software Architecture Mode] The difference between MVVM mode and MVC mode
- 使用ESP32驱动QMA7981读取三轴加速度(带例程)
- Is the real database data of TiDB stored in kv and pd?
- SkiaSharp 之 WPF 自绘 五环弹动球(案例版)
- 从零开始Blazor Server(4)--登录系统
- Introduction and application of heap memory (including examples)
- 招聘随想2022
- Get the Token from the revised version of Qubutu Bed
- Opencv creates a window - cv.namedWindow()
猜你喜欢
随机推荐
Custom Types - Enums, Unions
UXDB如何返回当前数据库所有表的记录数?
AC与瘦AP的WLAN组网实验
Lsky Pro 企业版手动升级、优化教程
使用ESP32驱动QMA7981读取三轴加速度(带例程)
CTO强烈禁止使用Calendar,那用啥?
Ogg synchronizes oracle to mysql, there may be characters that need to be escaped in the field, how to configure escape?
PerViT: 神经网络也能像人类利用外围视觉一样观察图像!
Enterprise WeChat group: robot timing reminder function database configuration
基于CAP组件实现补偿事务与消息幂等性
《时代》杂志:元宇宙时代将改变世界
Redis learning
笔记。。。。
shell脚本------条件测试 if语句和case分支语句
微信公众号授权登录后报redirect_uri参数错误的问题
CTFshow,命令执行:web34、35、36
笔记。。。。
阿里腾讯面试一二
notes....
Intensive reading of ACmix papers, and analysis of its model structure