关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信强制解绑手机号码方法[通俗易懂]

    微信强制解绑手机号码方法[通俗易懂]现在微信不用手机号已经无法进行注册,但是一个手机号却可以多次注册。这问题就来了,怎么将手机号进行解绑然后继续注册呢?7月27日实测有效。步骤如下:1、记住需要解绑手机的微信号,然后退出微信2、

    2022年8月1日
    5
  • pychram2021.11.3激活【2021免费激活】

    (pychram2021.11.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9ZHR…

    2022年3月28日
    59
  • win10 卸载cuda

    win10 卸载cuda1.首先对于cuda8.0、cuda7.5的卸载都可以兼容安装cuda9.0之后,电脑原来的NVIDIA图形驱动会被更新,NVIDIAPhysx系统软件也会被更新(安装低版cuda可能不会被更新)。卸载时候要注意了,别动这2个。2.卸载1.前言杀毒软件别用来卸载这个了,不好找。打开电脑的控制面板,找到程序,卸载程序点击当天安装的时间,会找到刚才装的cuda软件,也包括以前N…

    2022年6月15日
    481
  • 获取实体类@注解信息_jquery获取class名称

    获取实体类@注解信息_jquery获取class名称通过包名和注解获取类Classimportjava.io.File;importjava.io.IOException;importjava.lang.annotation.Annotation;importjava.net.JarURLConnection;importjava.net.URL;importjava.net.URLDecoder;importjava.util.Enumeration;importjava.util.HashSet;importjav

    2025年6月19日
    4
  • 解决8080端口被占用问题「建议收藏」

    解决8080端口被占用问题「建议收藏」问题叙述在IDEA中运行项目时会出现8080端口被占用的情况,可能是运行tomcat的时候,也可能是在用vue进行前后端分离项目,运行后端代码时出现端口被占用。这里以运行tomcat显示占用举例,如下图所示;解决方法1、按快捷键windows+R,在运行框里输入cmd,如图所示,2、在dos命令中输入netstat-aon|findstr“8080”,查看端口。3、找到8080端口,查看正在运行程序的pid,如图所示。4、回到桌面,任务栏,右键,任务管理器,如图所示会显示正在运行的

    2025年6月24日
    4
  • intellij idea 主题下载网站

    intellij idea 主题下载网站https://plugins.jetbrains.com/search?tags=Theme

    2022年5月31日
    257

发表回复

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

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