关于Json 与 Request Header 的Content-Type 一些关系。

关于Json 与 Request Header 的Content-Type 一些关系。由于最近遇到关于ashx文件ajax解析参数的问题。查询网上很多资料后,已经解决。鉴于网上已经足够多的,关于这个问题的文章。大部分内容来自互联网,我这里只是做一些整理和记录。特此说明并非原创。Content-Type是返回消息中非常重要的内容,表示后面的文档属于什么MIME类型。Content-Type:[type]/[subtype];parameter。例如最常见的就是text/htm…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

由于最近遇到关于ashx文件ajax解析参数的问题。查询网上很多资料后,已经解决。

鉴于网上已经足够多的,关于这个问题的文章。大部分内容来自互联网,我这里只是做一些整理和记录。特此说明并非原创。

Content-Type是返回消息中非常重要的内容,表示后面的文档属于什么MIME类型。Content-Type: [type]/[subtype]; parameter。例如最常见的就是text/html,它的意思是说返回的内容是文本类型,这个文本又是HTML格式的。原则上浏览器会根据Content-Type来决定如何显示返回的消息体内容。

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。

enctype值和意义:

enctype值 意义
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain 空格转换为 “+” 加号,但不对特殊字符编码。

HTTP请求中,

  • get请求,参数url:http://test/ttt?name=value&name1=value1; 获取方式 Request.QueryString[key]

  • post请求,Content-Type为application/x-www-form-urlencoded;参数在消息中也就是Form Data里面; 获取方式 Request.Form[key]

  • post请求,如果不是上面的特定方式,由于数据格式不固定,所以只能才取最原始方式读取数据流。则在request payload中,通过读取流的方式来处理;Request.InputStream.Read(…);

实体(Entity)

信息被作为请求或响应的有效负荷被传递。通俗的说就是,实体是指作为请求或者响应消息的有效载荷而传输的信息。

例如,当用户想浏览某个Web页面时,HTTP请求消息种的请求方法,响应消息中的状态码都不是有效载荷,它们都是为了实现文件下载这一最终目的而在客户于服务器之间传送的额外消息:而用户所要浏览的HTML文件及其元消息(文件大小,最近修改时间等)才是有效载荷。

有效载荷(Payload)

通过前面的http定义可以了解到什么是payload。

请求request消息或响应response消息中可能会包含真正要传递的数据,这个数据我们就称为消息的有效负荷,对应着就是request payload,response payload。

知道了什么是Request Payload,那服务端是如何接收并解析出我们通过Request Payload所传递的特殊格式的数据呢(比如表单键值对参数或复杂的json对象)?
一般服务端程序会根据头字段中的Content-type的值来做特定的处理,如x-www-form-urlencoded。

下面两种情况在chrome 中 看到的方式不同:

第一种,传递的是json对象过去,但是浏览器会将他序列化以后,在传输。

    $.ajax({
          url: _Url,
          type: 'POST',
          data: _Data,
          async: _sync ? false : true,
          contentType: "application/json",
          dataType: "json"
    });

image

第二种, JSON.stringify(_Data) 将json字符串传递,所以post过去的只是一个字符串。

    $.ajax({
          url: _Url,
          type: 'POST',
          data: JSON.stringify(_Data),
          async: _sync ? false : true,
          contentType: "application/json",
          dataType: "json"
    });

image

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172648.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月24日 上午9:00
下一篇 2022年8月24日 上午9:00


相关推荐

  • 2005年10大偏执狂技术

    2005年10大偏执狂技术1 GoogleEarth 2005 年 Google 正式推出了免费的基于卫星图片的地图软件 GoogleEarth GoogleEarth 的功能犹如该公司的在线地图服务 GoogleMap 用户可以在一副 3D 地图上放大目的地或获得驾车指南 而 GoogleEarth 采用的 3D 地图定位技术则把 GoogleMap 上的最新卫星图片推向了一个新水平 用户可以在 3D 地图上搜索特定区域 放大

    2026年3月26日
    2
  • Tomcat原理

    Tomcat原理Tomcat 顶层架构 Tomcat 的顶层结构图 1 Tomcat 中最顶层的容器是 Server 代表着整个服务器 一个 Server 可以包含至少一个 Service 用于具体提供服务 2 Service 主要包含两个部分 Connector 和 Container Tomcat 的心脏就是这两个组件 这两个组件的作用 Connector 用于处理连接相关的事情 并提供 Socket 与 Request

    2026年3月26日
    2
  • AD原理图设计中如何添加NET CLASS和差分线

    AD原理图设计中如何添加NET CLASS和差分线一,添加NETCLASS由于pcb中可能存在需要设定不同规则的网络组,如果直接在pcb中添加netclass后再进行原理图更新pcb时会自动将netclass删除,所以最好在原理图中设定好。上图是放置NetClass符号的菜单。在原理图中的样子。根据上图所示修改属性和名称。参考使用案例。虚线框中的部分是Blanket,被包围的区域会被设置成同样的属性。更新完之后就可以在pcb这里看到添加的Class了。二,原理图中添加差分线标志作用同样是保证,在更新pcb的时候不会移除。

    2022年7月16日
    19
  • snmptrap使用[通俗易懂]

    snmptrap使用[通俗易懂]SNMP简单网络管理协议,其中其支持的一个命令snmptrap命令,用于模拟向管理机发送trap消息。启动陷阱方法:snmptrapd-C-c/etc/snmp/snmptrapd.conf-Lf/var/log/net-snmptrap.log例如:snmptrap-v1-cpublic192.168.2.124.1.3.6.1.4.1…

    2022年8月21日
    7
  • 安装GPU加速的tensorflow 卸载tensorflow

    安装GPU加速的tensorflow 卸载tensorflow安装GPU加速的tensorflow卸载tensorflow 一:本次安装实验环境Ubuntu16.04+cuda9.0+cudnn7.0或Ubuntu16.04+cuda8.0+cudnn5.1什么是CUDA呢?简单的来讲它是为了实现GPU运算的平台。我们的tensorflow会调用cuda的接口,利用显卡帮助我们运算程序而CUDNN…

    2022年6月22日
    39
  • (毕业设计资料)基于单片机SPWM逆变器电源系统设计

    (毕业设计资料)基于单片机SPWM逆变器电源系统设计输出:正弦波频率:可调;幅值:可调;逆变原理:51单片机SPWM驱动H桥+后级滤波;调节方式:频率加按键、频率减按键、幅值加按键、幅值减按键;频率调节范围:10hz、20hz、30hz、40hz、50hz、60hz、70hz、80hz、100hz;幅值调节范围:0%,10%,20%,30%,40%,50%,60%,70%,80%,90%,100%;(输出峰值占输入电压百分比)输出最大电流:2A;过流打嗝保护:过流保护值2A,过流时切断,5秒后尝试恢复输出;输入电压范围:

    2022年4月30日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号