在解决文件下载名字乱码时,想到一个问题。

请求头的ContentType什么时候设置的?谁设置的?

首先说明几点细节:

① ContentType默认为text/html,charset=ISO8859-1;

② 有些JS插件可能会对其进行设置;

③ ajax 发送post请求会默认将charset设置为UTF-8;MIME类型视情况而定;

④ 表单的两种MIME类型:application/x-www-form-urlencoded和multipart/form-data;具体参看form的基本enctype属性

⑤ 发送请求未拿到响应前,会有一个临时headers;拿到响应后为正式headers;

⑥ 正常提交表单,不会设置charset,会设置MIME类型。

⑦ 常见的四种MIME:

text/html;
application/json;
multipart/form-data;
application/x-www-form-urlencoded

application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。具体点击查看四种常见的ContentType

⑧ 使用IE浏览器-编码,会设置页面编码!

说明:jsp页面pageEncoding、后台过滤器与Tomcat配置统一使用的都是UTF-8。如果浏览器编码设置为其他,如ISO8859-1,那么存到数据库的将会是乱码!!

【下面看几组截图】:

① get请求,url参数非汉字

② get请求,url参数有汉字进行了编码(手动或自动)

无ContentType!!

③ ajax提交表单,获取响应前

④ ajax提交表单,获取响应后

ContentType:application/x-www-form-urlencoded;charset=UTF-8

⑤ submit正常提交表单,method=post,获取响应前

⑥ submit正常提交表单,method=post,获取响应后

ContentType:application/x-www-form-urlencoded ,无charset。

⑦ submit正常提交表单,method=get,获取响应前

⑧ submit正常提交表单,method=get,获取响应后

ContentType:无 !!。

⑨ ajax.get提交表单,获取响应前

⑩ ajax.get提交表单,获取响应后

无 ContentType!!

Tips:

无 ContentType 意思是使用默认值!!

综上可知:

使用post提交表单时,会改变MIME;

ajax提交表单(post)时,改变MIME和charset;

get方式,使用默认值!

Request Headers - ContentType的更多相关文章

  1. 在iOS(iPhone / iPad / iPod)上查找所有注册的mime-types / url方案协议(intent filters)

    我是移动网络开发人员,我想测试一些iOS设备,以查看iOS设备可以接受的MIME类型和网址计划.在Android上,我可以安装一个名为PackageExplorer的应用程序,该应用程序列出了所有apks的所有“intentfilters”,并列出了什么文件mime-types(image/png,text/html,text/x-vcard)和url方案像geo:,tel:,sms:,mailt

  2. IOS设备问题与HTML表单输入(type = text)

    所以我有一个HTML登录表单与两个字段:电子邮件和密码.这些可以在除iOS设备之外的任何设备的浏览器上轻松填充.在IOS领域几乎不能关注焦点,一旦焦点,键盘弹出,我开始打字,但实际上没有填充.我已经尝试过Chrome和safari,仍然得到相同的结果.字段保持黑色.Bellow是我的格式如何格式化:请帮助!

  3. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

  4. 确定字符串是否包含Swift中的一个字符的最佳方法是什么?

    我需要确定字符串是否包含我定义的自定义集中的任何字符.我从this发现你可以使用rangeOfString来确定一个字符串是否包含另一个字符串.这当然也适用于字符,如果你一次测试每个字符一个.我想知道最好的办法是做什么.您可以创建一个包含自定义字符集的CharacterSet然后根据此字符集测试成员资格:Swift3:对于不区分大小写的比较,请使用.Swift2:Swift1.2

  5. Android中目录的MIME类型

    我想知道我是否可以启动一个Intent来查看带有文件浏览器的目录(如果设备上安装了一个),那么我可以打开这样的文件夹:解决方法AndExplorer有供应商mime类型使用AndExplorer作为文件选择器:>vnd.android.cursor.dir/lysesoft.andexplorer.director>vnd.android.cursor.dir/lysesoft.andexplor

  6. android – 使用改造下载图像文件

    解决方法问题是响应中的内容类型标头包含一个虚假的字符集:Retrofit看到了这一点,并推断响应是它可以记录的文本.您应该将问题报告给服务器的管理员.如果您将问题报告给GitHub上的Retrofit问题跟踪器,我们可能会从此问题中恢复而不是崩溃.

  7. 我的应用程序不会出现在android.intent.action.VIEW的选择器对话框中,仅在Marshmallow上使用mime type video / *

    基本上,当一个应用程序共享一个视频网址时,我的应用程序应该显示在列表中,但事实并非如此.MXPlayer和谷歌照片媒体播放器都没有显示好和全播(最近有一个版本来解决这个问题).我写了一个快速的应用来测试这个问题,这是我的清单过滤器:这是重现问题的代码:这只是棉花糖的一个问题.编辑:我应该补充一点,并非所有棉花糖设备都这样做.我第一次听说它时花了很长时间才重现它,有一天它刚刚开始在我的Nexus5上

  8. android – 有没有办法阻止Mobile Safari在HTML表单的数字字段中插入逗号?

    我有一个网站,其中包含一个表单,允许用户输入信用卡详细信息.卡号,发行号,CVC号和他们希望存入的金额的字段使用HTML形式的输入框,类型为“数字”.iOS5附带的更新的MobileSafari会自动在“数字”输入字段中将逗号插入数字中.这不仅在CC编号中看起来很愚蠢,而且会破坏我的验证.有办法阻止这个吗?

  9. android – 如何知道标签是否存在?

    我认为有必要插入一个按钮来检查标签是否存在.我在我的活动中添加了“前台调度系统”,但是我仍然不明白如果标签存在与否,如何显示消息,在使用读写方法之前要检查什么?解决方法扫描新的NFC标签后立即调用onNewIntent.例如,如果您想要写入每个扫描的标记,则onNewIntent()方法将如下所示:你的writeTag方法当然还没有使用它给出的字符串,但你可能知道.如果您想要保持最新的布尔值以检查可用标记,请执行以下操作:

  10. android – Phonegap本地构建 – jquery ajax错误:readystate 0 responsetext status 0 statustext error

    解决方法您是否在索引文件中包含了内容安全元标记?

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到<input>中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部