POST、GET传输数据大小限制

HTTP协议规范没有对URL长度进行限制,也没有限制消息主体的大小,所以从理论上讲,GET、POST是没有大小限制的。那又为什么在使用过程中会有大小限制呢??

GET方式数据长度限制:

  1. 服务器做了GET提交数据大小的限制
  2. 由于GET方式发送数据是拼接在URL,GET提交时,传输数据会受到URL长度的限制,不同浏览器的长度限制还不一样

POST方式数据长度限制:

  1. 各个WEB服务器会规定对POST提交数据大小进行限制,Apache等都有各自的配置。

安全性

HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。规范把HTTP 请求分为三个部分:状态行、请求头、消息主体。POST请求发送的数据是放在消息主体中,这是遵循HTTP协议的规范格式,而GET是将发送的数据直接拼接在URL的后面,也就是在状态行中。很明显,POST方式比GET方式安全

POST方式:

状态行:
Request URL:http://crm.piao.qunar.com
Request Method:POST 请求头:
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:190
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:QN1=wKgZEVYbR4wc9UPaYgXcAg==; QN99=3984;
Host:crm.piao.qunar.com:8080
Origin:http://crm.piao.qunar.com:8080
Pragma:no-cache
Referer:http://crm.piao.qunar.com:8080/merchantPage/group-supplier
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
X-Requested-With:XMLHttpRequest 消息主体:
data=1

GET方式:

状态行:
Request URL:http://crm.piao.qunar.com?data=1
Request Method:GET 请求头:
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:190
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:QN1=wKgZEVYbR4wc9UPaYgXcAg==; QN99=3984;
Host:crm.piao.qunar.com:8080
Origin:http://crm.piao.qunar.com:8080
Pragma:no-cache
Referer:http://crm.piao.qunar.com:8080/merchantPage/group-supplier
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
X-Requested-With:XMLHttpRequest 消息主体:

enctype

POST请求需要设置:enctype=application/x-www-form-urlencoded

文件上传需要设置:enctype=multipart/form-data

jQuery的GET或者POST方式传输的数据,是否自动转码为utf-8??

使用jQuery的GET、POST方式传输数据都有可能未经过utf-8编码,jQuery.param方法是将键值对转化为utf-8编码的方法。当使用jQuery的GET或者POST方式发送数据时,如果data类型不是string,那么会对data进行utf-8编码,可以看下面的jQuery源码:

if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data, s.traditional );
}

为了确保传输的数据为utf-8编码,怎么办??

  1. 在提交数据时,建议使用jQuery的serialize方法,serialize会调用jQuery.param方法,对得到的对象进行utf-8编码,返回一个字符串
  2. 使用$.ajax/$.get/$.post方法时,data属性值为一个对象
  3. 使用encodeURIComponent方法对要传的数据进行utf-8编码

Javascript的GET、POST请求的更多相关文章

  1. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  2. 【转】ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  3. arcgis api for JavaScript _跨域请求

    arcgis api for JavaScript  中出现跨域请求是常见问题, 通常出现类似如下错误消息类似: XMLHttpRequest cannot load http://10.32.2.7 ...

  4. JavaScript : CORS和Ajax请求

    CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是 ...

  5. JavaScript跨域资源请求(CORS)解决方案

    跨域:当协议.主域名.子域名.端口号中任意一个不相同时都不算同一个域,而在不同域之间请求数据即为跨域请求.解决方法有以下几种(如有错误欢迎指出)以请求图片url为例: 1.通过XMLHttpReque ...

  6. javascript fetch 跨域请求时 session失效问题

    javascript 使用fetch进行跨域请求时默认是不带cookie的,所以会造成 session失效. fetch(url, { method: 'POST', credentials: 'in ...

  7. JavaScript 跨站伪造请求-CSRF

    CSRF: Cross-Site Request Forgery CSRF 概念 `定义`: 是一种对网站的而已利用,也被称之为one-click-attack 或者 session riding, ...

  8. javascript写的ajax请求

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  9. javascript for循环+异步请求导致请求顺序不一致

    工作中遇到一个问题 for循环,再把循环出来的ID再进行二次请求 这就导致一个问题 请求结果返回顺序不一致 原因:异步请求会把回调事件放入微任务事件队列,宏任务执行完毕再执行微任务,具体参考事件队列机 ...

  10. 【JavaScript】新浪微博ajax请求后改变地址栏url,但页面不跳转的方案解析

    新浪微博当你弹出一个视频的时候再点下一页时,原视频还在,而且地址栏的url的页数变了.对于这种网上讨论最多的方案有以下几种: 一.通过锚点Hash实现在这方面其实国内很早就有做了,比如淘宝画报,通过的 ...

随机推荐

  1. SQL中exists、not exists以及in、not in的区别和使用

    exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:   select name from student where sex = 'm' and mark exists(selec ...

  2. hdu1561 The more, The Better (树形dp+背包)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1561 思路:树形dp+01背包 //看注释可以懂 用vector建树更简单. 代码: #i ...

  3. OSI七层模型及TCP/IP四层模型

    1)  OSI七层模型及TCP/IP四层模型 OSI七层模型:是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系.它是一个七层的.抽象的模型,不仅包括一系列抽象的术语或概念,也包 ...

  4. 2016 Multi-University Training Contest 4

    6/12 2016 Multi-University Training Contest 4官方题解 KMP+DP A Another Meaning(CYD) 题意: 给一段字符,同时给定你一个单词, ...

  5. eclipse调试solr

    eclipse调试solr 现在solr的源码包,我这里是4.10.2, 编译, ant ivy-bootstrap ant eclipse 导入elipse,将solr/example/solr/下 ...

  6. 1.0 多控制器管理(附:Demo)

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书”       控制器 :   一个iOS的app很少只由一个控制器组成,除非这个app极其简 ...

  7. MySQL函数操作数据库

    1.select语句查询信息(实现模糊查询) <form name="form1" method="post" action=""&g ...

  8. HDU1559 最大子矩阵 (二维树状数组)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1559 最大子矩阵 Time Limit: 30000/10000 MS (Java/Others)  ...

  9. ejabberd 在eclipse(erlide)中的配置、调试、运行

    最近在折腾ejabberd,将ejabberd项目配置到eclipse中进行编译.调试等,现在将过程记下来,希望能帮助到需要的人. 准备 本次环境是在linux中进行,博主的linux是fedora2 ...

  10. JVM中,对象在内存中的布局

    在hotSpot虚拟机中,对象在内存中的布局可以分成对象头.实例数据.对齐填充三部分. 对象头:主要包括: 1.对象自身的运行行元数据,比如哈希码.GC分代年龄.锁状态标志等,这部分长度在32位虚拟机 ...