Http头部字段之Disposition

  • Disposition头部字段介绍
  • RFC规范介绍
  • RFC 6266与RFC 2047

实习的时候公司将一个某个关于下载的Bug交给了我来修,看了代码和日志后发现是Disposition字段的规范兼容性惹的锅,因为有些协议使用的是老协议,我们的项目没有对其进行兼容,最终我阅读RFC的规范参考Goole浏览器的源码将其解决。

Disposition头部字段介绍

Content-Disposition 是 HTTP 响应头(或请求头)中的一个字段,主要用于 控制客户端如何处理服务器返回的内容,例如:

  • 是否直接显示内容(如浏览器内嵌显示 PDF)。
  • 是否强制下载文件(弹出下载对话框)。
  • 指定下载时的默认文件名
  • 语法格式

    Content-Disposition: inline | attachment; filename="filename.ext"
    
    • inline:直接显示。
    • attachment:强制下载。
    • filename:关键参数,文件名。

RFC规范介绍

  1. RFC是什么

    RFC(Request for Comments,征求意见稿) 是一系列由 互联网工程任务组(IETF, Internet Engineering Task Force) 发布的技术标准文档,用于定义互联网协议(如 TCP/IP、HTTP、DNS)、通信规范、API 设计等。RFC 文档是互联网基础设施的核心参考,许多网络协议和技术的实现都基于它们。

  2. RFC的分类

    类型说明示例
    标准(Standards Track)正式成为互联网标准,如 TCP/IP、HTTP、SMTP。RFC 793 (TCP)、RFC 9110 (HTTP/1.1)
    实验性(Experimental)尚未成熟的技术,可能被采纳或废弃。RFC 2324 (HTCPCP,恶搞的“咖啡壶协议”)
    信息性(Informational)提供背景知识,非正式标准。RFC 1855 (网络礼仪指南)
    历史性(Historic)已过时的协议或技术。RFC 1149 (IP over Carrier Pigeon)
    最佳实践(BCP, Best Current Practice)推荐的操作方法,如安全实践。RFC 6919 (DNSSEC 部署指南)

RFC 6266与RFC 2047

  1. RFC6266: Content-Disposition in HTTP
  • 标题: “Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)”
  • 发布: 2011年6月
  • 状态: 现行标准(Proposed Standard)
  • 核心作用:标准化HTTP响应头 Content-Disposition 的用法,用于指示浏览器如何处理服务器返回的内容(如直接显示或下载文件)。

当传输的filename是全英文时,使用filename参数直接用ASCII就能表示。

  • 但是如果出现中英文混合,此时就无法表示了,所以它依赖RFC 5987
  1. RFC5987 (Character Set and Language Encoding for HTTP Headers)
  • 作用:RFC6266 使用 RFC5987 定义的 filename* 参数格式来解决非ASCII文件名编码问题(如中文文件名)。其对非中文使用url encode+utf8转码的形式:

    Content-Disposition: attachment; filename*=UTF-8''%E4%B8%AD%E6%96%87.txt
    
  1. RFC2047: MIME Message Header Extensions
  • 标题: “MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text”
  • 发布: 1996年11月
  • 状态: 现行标准(Proposed Standard)
  • 核心作用:
    扩展电子邮件(MIME)头部字段,支持非ASCII字符(如中文、日文)的编码传输。

它处理中文的方式是将所有中文字符先转为Base64,然后加上特定的格式进行分段(如果太长)。

  • 所以我们根据 RFC 2047 规范,对于被分割成多个编码段的连续文本,必须先合并所有分段内容,再进行整体解码,这是协议明确规定的强制性要求。
=?UTF-8?B?YW55?= =?UTF-8?B?IGNh?= =?UTF-8?B?cmU=?=

网易邮箱就是使用的RFC2027标准来传输下载附件时的filename

Goole源码参考:如果你想要对上述协议的disposition标准都进行兼容,去模拟浏览器作为不同服务器的客户端,可以参考Goole源码的解决办法,它是严格按照协议上的规范来处理的。

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

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

相关文章

VM文件管理与Vi/vim操作

[rootlocalhost /]# sudo mkdir /opt [rootlocalhost /]# sudo mkdir /opt/tmp [rootlocalhost /]# sudo touch /opt/tmp/a.txt [rootlocalhost /]# ls /opt/tmp/ a.txt [rootlocalhost /]# 3.步骤1:创建文件并插入日期时间vi /tmp/newfile在vi编辑器中输入以下命令…

【Android】安卓四大组件之内容提供者(ContentProvider):从基础到进阶

你手机里的通讯录,存储了所有联系人的信息。如果你想把这些联系人信息分享给其他App,就可以通过ContentProvider来实现。。 一、什么是 ContentProvider ‌ContentProvider‌ 是 Android 四大组件之一,负责实现‌跨应用程序的数据共享与访问…

Vue-19-前端框架Vue之应用基础组件通信(二)

文章目录 1 v-model(父子相传)1.1 App.vue1.2 Father.vue1.2.1 v-model用在html标签上1.2.2 v-model用在html标签上(本质写法)1.2.3 v-model用在组件标签上1.2.4 v-model用在组件标签上(本质写法)1.3 MyInput(自定义的组件)1.4 修改modelValue1.4.1 Father.vue1.4.2 MyInput.vu…

宝塔下载pgsql适配spring ai

1.宝塔安装pgvector 1.先去github下载pgvectorpgvector/pgvector: Open-source vector similarity search for Postgres 2.把压缩包上传到系统文件的/temp下解压,重命名文件名为pgvector,之后命令操作 cd /tmp cd pgvector export PG_CONFIG/www/serv…

RK3568项目(八)--linux驱动开发之基础外设(上)

目录 一、引言 二、准备工作 ------>2.1、驱动加载/卸载命令 三、字符设备驱动开发 ------>3.1、驱动模块的加载和卸载 ------>3.2、外部模块编译模板 Makefile ------>3.3、cdev 四、LED驱动 ------>4.1、原理图 ------>4.2、驱动 五、设备树 -…

BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabySQli1-flag获取、解析

解题思路打开靶场,题目提示是sql注入输入数据,判断下闭合11123报错:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 1 at line 1报错提示…

“AI 曼哈顿计划”:科技竞赛还是人类挑战?

美国国会下属的经济与安全审查委员会已将“推动建立并资助一项堪比曼哈顿计划的通用人工智能研发项目”列为其对国会的核心建议之一,明确显示出对AI竞赛战略意义的高度重视。与此同时,美国能源部在近几个月中多次公开将人工智能的突破比作“下一场曼哈顿…

音频信号的预加重:提升语音清晰度

一、预加重介绍预加重是一种信号处理技术,主要用于增强音频信号中的高频成分。由于人类语音的频谱特性,尤其是在辅音和音调的表达上,高频成分对于语音的清晰度至关重要。然而,在录音和传输过程中,这些高频成分往往会受…

WebSocket实战:实现实时聊天应用 - 双向通信技术详解

目录一、WebSocket:实时通信的"高速公路"1.1 HTTP的短板:永远的"单相思"1.2 WebSocket的优势:真正的"双向对话"二、30分钟搭建聊天服务器2.1 环境准备2.2 WebSocket配置类2.3 核心消息处理器三、前端实现&…

宏集案例 | 基于CODESYS的自动化控制系统,开放架构 × 高度集成 × 远程运维

​​案例概况客户:MACS Sterilisationsanlagen GmbH(Ermafa Environmental Technologies GmbH 旗下) 应用场景:医疗与感染性废弃物的无害化处理控制系统应用产品:宏集Berghof高性能控制器设备(一&#xff0…

学习JNI 二

创建一个名为Learn1项目(Android Studio)。一、项目结构二、配置 build.gradlebuild.gradle.kts(:app)plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android) }android {namespace "com.demo.learn1&quo…

基于Spring Boot+Vue的DIY手工社预约管理系统(Echarts图形化、腾讯地图API)

2.10 视频课程管理功能实现2.11手工互动(视频弹幕)2.8预约设置管理功能实现🎈系统亮点:Echarts图形化、腾讯地图API;文档包含功能结构图、系统架构图、用例图、实体属性图、E-R图。一.系统开发工具与环境搭建1.系统设计…

leetcode 每日一题 1353. 最多可以参加的会议数目

更多技术访问 我的个人网站 (免费服务器,没有80/443端口) 1353. 最多可以参加的会议数目 给你一个数组 events,其中 events[i] [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 …

AI+智慧园区 | 事件处置自动化——大模型重构园区治理逻辑

在智慧园区的建设浪潮中,事件管理一直是园区高效运营的关键环节。考拉悠然所推出的大模型 智慧园区解决方案,在事件智能闭环管理方面独树一帜,为园区的日常运营编织了一张严密、高效、智能的管理网络,实现了从事件感知到处置的全…

FFmpeg Windows安装

FFmpeg 用于音频文件转换 Builds - CODEX FFMPEG gyan.dev ffmpeg-release-full.7z 下载完成之后 zip解压 大概就是 ffmpeg/ └── bin/ └── ffmpeg.exe 配置环境变量 ffmpeg -version 有可能idea还是找不到命令 就把命令路径写在程序里 例如

【2025/07/10】GitHub 今日热门项目

GitHub 今日热门项目 🚀 每日精选优质开源项目 | 发现优质开源项目,跟上技术发展趋势 📋 报告概览 📊 统计项📈 数值📝 说明📅 报告日期2025-07-10 (周四)GitHub Trending 每日快照&#x1f55…

JVM 基础 - JVM 内存结构

前言 本文主要对JVM 内存结构进行讲解,注意不要和Java内存模型混淆了。 运行时数据区 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配…

【案例】二手车交易价格预测-472

二手车交易价格预测 数据来源数据特征探索构建模型参考数据来源 天池 https://tianchi.aliyun.com/competition/entrance/231784/information 数据特征探索 目标特征工程做好之后,能同时进行 lightgbm catboost 神经网络等模型,所以尽量都转换为数值类特征。 如果仅仅是使用…

【Spring】Java SPI机制及Spring Boot使用实例

目录 一、SPI是什么 1.1 SPI 和 API 有什么区别? 二、使用场景 三、使用介绍 四、Spring Boot实例运用 五、总结 一、SPI是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架…

多维度数据资产测绘技术在安全管控平台中的应用实践

一、数据资产治理困境:从 “黑箱” 到 “可见性” 的行业挑战在数字化转型加速的当下,企业数据资产呈现爆发式增长,而传统资产梳理手段因维度单一、时效性差,导致 “资产黑箱” 问题频发。某省级运营商曾在安全评估中发现&#xf…