100分求标头为:Content-Type:multipart/form-data类型的表单提交问题

photohome 2005-07-10 09:06:05
迫切想知道
"boundary=---------------------------7d429871607fe"
7d429871607fe这个数值是如何产生的呢?是由服务器端随时生成的还是由IE在本地随机生成的呀?应该如何获取它??提交时这个数值要通过服务器端验证无误后才能正确上传数据吗????!
请各位前辈指教,我无法获取网站的boundary的值,获取的Content-Type标头值都是"Text/html"之类,而从来没有获取过“multipart/form-data; boundary=---------------------------7d429871607fe”这样的标头!!
跪谢!!
...全文
591 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanruinet 2005-07-11
  • 打赏
  • 举报
回复
这个最好试试,我没玩过multipart的form,不敢说
photohome 2005-07-11
  • 打赏
  • 举报
回复
谢谢 fancyf(凡瑞) 前辈!这个贴子应该可以结了。

只是还想请问一下,如果不是用IE浏览器,而是用c#的HttpWebRequest函数来模拟提交(自己随便填一个类似7d429871607fe的数值)行不行,能不能实现数据的成功提交呢??多谢啦!!
fanruinet 2005-07-11
  • 打赏
  • 举报
回复
>>>1、这个数值是由本地客户端产生的
是的
>>>2、这个服务器对这个数值并不进行合法性验证,只要这样数值在其它已经提交过数据中没有出现就行
是的
>>>3、只要这个这个数值是以前没有出现的唯一的值,服务器就接受,换言之就是可以成功提交数据是吗?
服务器接受是无条件的。服务器只知道把这个值当作一个分隔符,用来区分不同的Part,如果这个值选择的不合适(比如在要提交的数据内也包含这个值),服务器不会拒绝,但处理数据的时候会出错,可能原来的一块数据被错误的分割成多块。但“提交数据”这个过程还应该算成功的。
这只是从原理上进行的解释,具体的实现还依赖浏览器和服务器。
photohome 2005-07-11
  • 打赏
  • 举报
回复
依fancyf(凡瑞)前辈的说法是不是可以这样理解:

1、这个数值是由本地客户端产生的
2、这个服务器对这个数值并不进行合法性验证,只要这样数值在其它已经提交过数据中没有出现就行
3、只要这个这个数值是以前没有出现的唯一的值,服务器就接受,换言之就是可以成功提交数据是吗?

不知上面的理解是否正确,急盼fancyf(凡瑞)前辈解惑!谢谢!
X_Forever 2005-07-10
  • 打赏
  • 举报
回复
我也不太清楚boundary的问题,只是我自己在使用时是这样子的:
<Form id="Upload" endType="multipart/form-data" runat="server">
......
</Form>

提交这样的窗体时就会产生类似的信息(可以跟踪查看):
标头集合
名称 值
Cache-Control no-cache
Connection Keep-Alive
Content-Length 1959
Content-Type multipart/form-data; boundary=---------------------------7d538a1380718

对于这类东西一般都是用来上传文件的,在后台不必获取boundary值(至少我自己没有获取过)
fanruinet 2005-07-10
  • 打赏
  • 举报
回复
boundary只是个分界线,用来分隔multipart中不同的part,IE选择并确定的,其内容必须在任何发送的数据中都不出现才可以,因此不能完全靠随机。
因此这个数值不是用来验证的,除了分隔也没有什么额外的意义,而且在服务器端处理的时候web服务器已经把不同的part分隔好了,所以获取这个标头也没什么意义

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧