静态资源地址API字节流访问服务器文件区别及相互兼容方案

静态资源地址&API字节流访问服务器文件区别及相互兼容方案

  • 概述
  • 特殊场景
  • 分析&猜测
  • 解决

概述

访问文件资源,一般常见的有两种方式:

  • 静态资源地址:https://www.baidu.com/aaa.pnghttps://www.baidu.com/video.mp4
  • 接口获取文件流:https://www.baidu.com/api/png/aaa13

这两种方式一种是通过中间件进行http服务访问,一种是后端接口读取文件,然后以输出流响应给前端,但实际上得到的都是文件的字节流

特殊场景

但是在日常使用中

  • 浏览器访问:无论是访问静态资源地址,还是接口获取流,都可以访问文件(不同浏览器表现不同,有的可以预览有的直接下载);
  • img标签:只能使用静态资源地址,使用流的API地址,会裂开,可以通过浏览器转成Blob对象,然后赋值src使用;
  • videojs:只能使用静态资源地址,使用流的API地址,会提示“无法找到此视频兼容的源”,可以通过浏览器转成Blob对象,然后赋值,但是视频太大的时候对浏览器压力很大
  • ie的iframe:不支持Blob也不支持文件流预览,文件流会直接提示下载,ie只支持image、js、css之类的;

分析&猜测

但是两种访问方式都是得到文件的流,为啥两种方式使用的效果不一样呢,大致翻了很多资源,推断,个人推断是静态资源地址,最后面有文件扩展名,html标签处理时就可以知道流中的内容类型,然后渲染流内容。

解决

虽然只是推断,但是我尝试在流地址(https://www.baidu.com/api/png/aaa13)后面加上一个假的字符串/video.mp4/image.png),但后端接口对该path无任何处理

  • 于是得到了一个:https://www.baidu.com/api/png/aaa13/video.mp4访问原来的文件流API。

呵~ 结果您猜怎么怎么着,图片也能看了,视频也能播了,除了访问路径变了,任何数据处理都没改。

那就可以用这个手段欺骗浏览器,使API文件流也具有静态资源地址一样的作用和效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非空断言,

先看下TypeScript基础之非空断言操作符、可选链运算符、空值合并运算符-CSDN博客 我没有复现出来,但是我知道了它的作用 用 let str: string arg!; 代替 let str: string; if (arg) { str arg; } 非空断言(!)和不使用的区别在于对于…

【Linux】TCP套接字编程

目录 前言 UDP服务器的完善 线程的封装 结构定义 接口实现 环形队列 结构定义 接口实现 加锁 信号量的申请与释放 入队与出队 整体组装 初始化与析构 信息接收线程 消息发送线程 TCP套接字 创建套接字 listen accept 收发操作 客户端的编写 进一步完善 …

每日一题:LeetCode-1089. 复写零

每日一题系列(day 09) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

浅学指针(4)函数指针数组和qsort的使用

系列文章目录 文章目录 系列文章目录前言1.函数指针数组的⽤途作用:可以让代码更简洁,逻辑更清晰 2. 回调函数回调函数就是⼀个通过函数指针调⽤的函数 3 . qsort函数qsort函数可以排序所有数据类型解释如图:![在这里插入图片描述](https://i…

Google Chrome 下载 (离线版)

1 访问网址 Google Chrome 网络浏览器 2 点击 下载Chrome 3 直接运行 ChromeStandaloneSetup64.exe 其他: ####################### 谷歌浏览器 (Google Chrome) 最新版离线安装包下载 https://www.iplaysoft.com/tools/chrome/#google_vignette Google Chrome …

socks5代理如何工作?socks5代理可以用来做什么?

socks5代理是一种网络代理服务器,它通常用于改变网络请求的传输方式和地址,从而使得网络请求能够通过代理服务器进行访问。本文将介绍socks5代理的工作原理、优势、使用场景以及如何选择合适的socks5代理。 一、socks5代理的工作原理 socks5代理是一种协…

golang strings包的基本操作

文章目录 golang 的字符串函数EqualFoldHasPrefixHasSuffixContainsContainsRuneContainsAnyCountIndexIndexByteIndexRuneIndexAnyIndexFuncLastIndexLastIndexAnyLastIndexFuncTitleToLowerToLowerSpecialToUpperToUpperSpecialToTitleToTitleSpecialRepeatReplaceMapTrimTri…

一文读懂设备巡检的主要内容

在现代企业和组织中,设备的正常运行是业务持续发展的关键,尤其是制造业,由于其发展趋势不断机械化、自动化、大型化、高速化和复杂化,对设备巡检的要求越来越高。然而,在信息化时代,很多企业目前仍采用纸笔…

GPT实战系列-大模型训练和预测,如何加速、降低显存

GPT实战系列-大模型训练和预测,如何加速、降低显存 不做特别处理,深度学习默认参数精度为浮点32位精度(FP32)。大模型参数庞大,10-1000B级别,如果不注意优化,既耗费大量的显卡资源,…

Python应用:利用matplotlib画学生成绩分布饼图

1. 题目 给定一组学生成绩:[85, 92, 78, 65, 95, 88, 72, 60, 98, 45, 100, 46, 23, 88, 67, 89, 67, 88, 99],现在评分等级为优(90-100)、良(70-89)、及格(60-69)、不及格&#xff…

玩转大数据4:大数据的崛起与应用领域探索

图片来源网络 引言 在当今数字化时代,大数据正以前所未有的速度和规模崛起。大数据的出现不仅改变了企业和组织的经营模式,也对我们的社会生活带来了深刻的影响。Java作为一种广泛使用的编程语言,在大数据领域发挥着重要的作用。本文将重点…

【android开发-02】android中OptionMenu用法介绍

Option Menu 是 Android 中一种常用的菜单方式,它通常用于在屏幕的顶部显示一个下拉菜单,提供一些常用的功能或操作选项。菜单里的菜单项默认不会显示出来,需要点击右上角三个点的菜单按钮。以下是一些使用 Option Menu 的基本步骤&#xff1…

树莓派,linux换清华源

清华源网址 https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ 更换软件源 鉴于国内网络环境下载各大镜像,软件包速度慢的问题,需要更换软件源,以防下载慢,且在本教程中,统一更换为清华源。 2.3.1 更换树莓派软…

工程师每日刷题 -4

文章目录 1、深度学习2、算法与数据结构2.1、暴力解法2.2、滑动窗口法 3、编程基础 1、深度学习 问题:CNN的本质和优势? CNN 本质上是一个多层感知机 (MLP),其成功的原因关键在于它所采用的【稀疏连接】(局部感受)和…

【带头学C++】----- 九、类和对象 ---- 9.3 析构函数

9.3 析构函数 9.3.1 如何定义析构函数 函数名和类名称相同,在函数名前加 ~ ,没有返回值类型,没有函数形参。 (不能被重载) 当对象生命周期结束的时候,系统自动调用析构函数(析构函数会先清理对象占用内存空间存放的…

【openssl】Window系统如何编译openssl

本文主要记录如何编译出windows版本的openss的lib库 1.下载openssl,获得openssl-master.zip。 a.可以通过github(网址在下方)上下载最新的代码、今天是2023.12.1我用的master版本,下载之后恭喜大侠获得《openssl-master.zip》 …

测试-感受生产者消费者模型-阻塞队列

Testpublic void test() throws InterruptedException {// 创建一个阻塞队列// 编写1个生产者-3个消费者的模型BlockingQueue<String> queue new ArrayBlockingQueue<>(3);// 1个生产者new Thread(() -> {// 生产20个元素for (int i 0; i < 20; i) {try {/…

高效学习 React 框架AntDesign Pro

高效学习 用框架做项目。 第一步命令行运行下列命令&#xff0c;快速启动开发服务 $ npm i ant-design/pro-cli -g $ pro create my-app$ cd my-app $ npm i $ npm run start # 打开浏览器访问 http://localhost:8000 # 如果安装过程中出现报错&#xff0c;请更新包$ npm upd…

快递物流模拟系统

快递物流模拟系统 文章目录 快递物流模拟系统一、目的二、技术实现&#xff1a;三、网页功能具体介绍 一、目的 调用百度地图 JavaScript API 创建的简单的基站物流GPS定位与监控系统的示例网页 二、技术实现&#xff1a; 使用百度地图 JavaScript API 版本 2.0。利用 BMap …

Webpack——Webpack简介

1、什么是Webpack&#xff1f; Webpack是一个开源的JavaScript模块打包工具&#xff0c;其最核心的功能是解决模块之间的依赖&#xff0c;把各个模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件&#xff08;有时会有多个&#xff0c;这里讨论的只是最基本…