- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
让我们以下面的multipart/form-data
为例taken from w3.com :
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
它非常简单,但假设您正在编写代码来实现它并从头开始创建这样的请求。假设 file1.txt
是由用户创建的,我们无法控制其内容。
如果文本文件 file1.txt
包含字符串 --AaB03x
怎么办? 您可能生成了边界 AaB03x
随机,但让我们假设一个 "million monkeys entering a million web forms"场景。
是否有标准方法来处理这种不太可能但仍有可能发生的情况?
text/plain
(甚至可能是 image/jpeg
或 application/octet-stream
)是否应该“编码”还是以某种方式“转义”中的某些信息?
或者开发人员是否应该始终在文件的内容中搜索边界,然后反复不断地选择一个新的随机生成的边界,直到在文件中找不到所选的字符串?
最佳答案
HTTP 委托(delegate) MIME RFC 在这里定义 multipart/
类型。规则在 RFC 2046 section 5.1 中列出。 .
RFC 简单地声明边界不得出现:
The boundarydelimiter MUST NOT appear inside any of the encapsulated parts, on aline by itself or as the prefix of any line. This implies that it iscrucial that the composing agent be able to choose and specify aunique boundary parameter value that does not contain the boundaryparameter value of an enclosing multipart as a prefix.
和
NOTE: Because boundary delimiters must not appear in the body partsbeing encapsulated, a user agent must exercise care to choose aunique boundary parameter value. The boundary parameter value in theexample above could have been the result of an algorithm designed toproduce boundary delimiters with a very low probability of alreadyexisting in the data to be encapsulated without having to prescan thedata. Alternate algorithms might result in more "readable" boundarydelimiters for a recipient with an old user agent, but would requiremore attention to the possibility that the boundary delimiter mightappear at the beginning of some line in the encapsulated part. Thesimplest boundary delimiter line possible is something like "---",with a closing boundary delimiter line of "-----".
大多数 MIME 软件只是简单地生成一个随机边界,使得该边界出现在部分中的概率在统计上不太可能;例如可能会发生碰撞,但发生这种情况的可能性非常低,以至于不可行。电脑UUID values依赖相同的原则;如果一年生成几万亿个 UUID,则生成两个相同 UUID 值的概率与某人被陨石击中的概率大致相同,两者的概率均为 170 亿分之一。
请注意,您通常将二进制数据编码为某种形式的 ASCII 安全编码,例如 base64,这是一种不包含破折号的编码,消除了二进制数据包含边界的可能性。
因此,处理可能性的标准方法是简单地使可能性变得几乎不可能。如果存储电子邮件的计算机更有可能被陨石击中,为什么还要担心 MIME 边界?
关于forms - 如果表单数据边界包含在附件中怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539498/
我一直在开发一个 .NET 字符串格式化库来协助应用程序的本地化。它称为 SmartFormat 并在 GitHub 上开源. 它试图解决的问题之一是 Grammatical Numbers .这也称
leetcode关于单数II的题目是: 给定一个整数数组,除一个元素外,每个元素出现三次。找到那一个。笔记:您的算法应该具有线性运行时复杂度。你能在不使用额外内存的情况下实现它吗? 其实我已经从网站上
我想知道创建/命名模型的首选方法是什么? 我的应用程序有一个“用户”模型,其中包含用于创建、获取、更新(等)用户记录的所有相关业务逻辑。 在我的一些 Controller 中,我可能想要获取多个“用户
在我的 Mysql 数据库中,我有一个术语列表,例如(首字母大写,大多数时候是复数) Hairdressers Restaurants Beauty Salons Fournitures For Re
如果我决定为我的所有路线名称使用复数形式,但某些资源仅作为一个东西存在,您是否将其保持为单数(更直观)或尊重使用复数的决定并保持这种方式? 我们正在用 PHP 为我们的客户门户网站设计一个新的 API
我可能在做一些愚蠢的事情,但是...... 应用/模型/user.rb: class User 然后,当我导航到 /users/123/totem/new 时,出现错误: ActionView::
您能否澄清一些 Matplotlib 术语: “subplots”(或“subplot”?)这个词是“axes”的同义词吗? “轴”和“轴”的单数/复数是什么? 最佳答案 这确实是一个令人困惑的问题。
我有一个 profile我的应用程序中的模型。我想允许用户通过 /profile 查看他们自己的个人资料,所以我创建了这条路线: resource :profile, :only => :show 我
我是一名优秀的程序员,十分优秀!