发送form-data数据时,boundary是浏览器自动设置的吗?可以手动设置吗?或者发送前能否获取boundary的值是什么?
$.ajax({ type:"post", url:"/login", data:formData, success:function(res){ }, processData: false, contentType: “multipart/form-data;boundary=xxx”, error:function(xhr){ console.log(xhr) }
是的,不需要自己手动设置,浏览器会自动补全。其实 contentType
也不需要指定。
想要获取 boundary
的值?获取来干嘛,这不是后端去获取的吗?可能是因为你在请求中设置了 contentType
导致后端接收请求的解析出问题了?试试看直接把 contentType
设置为 false
。
jQuery.ajax() | jQuery API Documentation
答案:
发送multipart/form-data
数据时,boundary通常是浏览器自动设置的。当使用原生HTML表单或现代前端库(如jQuery, Axios等)发送表单数据时,浏览器会自动生成一个唯一的boundary字符串,并将其包含在Content-Type
头部中。
不可以手动设置boundary的值,因为浏览器在准备发送数据时会自动添加boundary。尝试手动设置可能会导致浏览器忽略它,或者产生不正确的请求格式。
在发送前,无法直接获取boundary的值,因为浏览器在内部处理这个细节,并不直接暴露给开发者。
在你提供的jQuery $.ajax
示例中,设置contentType
为"multipart/form-data;boundary=xxx"
是不正确的。你应该允许浏览器自动处理boundary,因此不应该设置contentType
为具体的boundary值。相反,你应该设置contentType
为false
,这样jQuery就不会设置Content-Type
头部,而是让浏览器自动生成包含正确boundary的Content-Type
。
正确的jQuery $.ajax
调用应该像这样:
$.ajax({ type: "post", url: "/login", data: formData, success: function(res) { // 处理响应 }, processData: false, // 不处理数据为查询字符串 contentType: false, // 不设置Content-Type头部 error: function(xhr) { console.log(xhr); }});
这样,浏览器会自动设置正确的Content-Type
头部,包括一个唯一的boundary字符串,用于分隔表单数据中的不同部分。
我不知道为什么不能让jQuery传递上传数据,因为AJAX对象似乎配置正确,并且发送了正确的content-type/mime-type头部。 我尝试了两种不同的请求形式--一种是将FormData对象包含在文本中,另一种是直接传递FormData对象。 不幸的是,不管怎样,我都无法传递任何内容,$_files和$_post都是空数组。
从这个Bugzilla线程(还有)可以看出,Firefox并不总是在POST请求中发送Origin头。RFC声明不应在某些未定义的“隐私敏感”上下文中发送。Mozilla在这里定义了这些上下文。 我很想知道,这些是不是Firefox不会发送Origin头的唯一情况。据我所知,它也不会在跨源POST请求中发送它(尽管Chrome和Internet ;Explorer会),但我不能在文档中确认这一点。
我有一个让我发疯的问题。我试图在windows Server2012作为active directory服务器、Ubuntu12.04和apache作为webserver以及windows 7笔记本电脑作为客户端的组合上实现单点登录(所有3个都在同一个本地网络上)。我想我已经把一切都安排好了: > 我已经在广告服务器上创建了一个keytab文件,当从webserver上的kinit命令中使用该文件
问题内容: 您如何判断浏览器是否自动填充了文本框?尤其是用户名和密码框可自动填充页面加载。 我的第一个问题是页面加载序列何时发生?是在document.ready之前还是之后? 其次,我该如何使用逻辑找出这种情况是否发生?它不是我想阻止这种情况发生,只是挂接到事件中。最好是这样的: 如果可能的话,我希望看到一个jsfiddle显示您的答案。 问题答案: 问题是自动填充由不同的浏览器处理。有些派遣变
我已经在这方面研究了很多线程,看来我们无法通过编程方式更改浏览器的时区。我们有moment-timezone.js库,我们可以使用它来设置时区,但这只适用于它的对象。如果您仍然使用javascript本机new Date(),那么您仍然会在浏览器时区中获得Date。 我有一个angularjs应用程序,在那里我使用kendo Ui小部件和momentjs库来处理日期。 我将不得不在代码中各处独立处
在处理 ASP 脚本时,任何没有包含在 ASP 定界符或 <SCRIPT> 标记中的文本或图形都将被简单地返回给浏览器。可以通过使用 Response 对象显示地把内容发送给浏览器。 发送内容 要将内容从 ASP 定界符内部或过程发送给浏览器,可以使用 Response 对象的 Write 方法。例如,下面的语句可以根据用户是否访问过此页而发送不同的问候语: <% If FirstTime =