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编码

最新文章

  1. js 理解new的运行机制
  2. EF架构~linq模拟left join的两种写法,性能差之千里!
  3. SharePoint 2013 一些小技巧
  4. (转)Javascript匿名函数的写法、传参、递归
  5. IDL---ENVI
  6. Part 4 using entity framework
  7. 从python的yield说起
  8. [React] React Fundamentals: JSX Deep Dive
  9. Quartz1.8.5例子(五)
  10. 【线段树】BAPC2014 E Excellent Engineers (Codeforces GYM 100526)
  11. 工厂方法模式(java 设计模式)
  12. .C .h 和 .CCP的区别
  13. block之---循环引用
  14. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增模块管理界面导出功能(可按条件导出)
  15. zabbix监控概念
  16. 01. Numpy模块
  17. 通过全备+binlog_server同步恢复被drop的库或表
  18. 深入Java内存模型之阅读理解(1)
  19. [No000016C]做企业分析的三个重要工具
  20. 无需SherlockActionbar的SlidingMenu使用详解(一)——通过SlidingMenu设置容器并解决滑动卡顿的问题

热门文章

  1. Knockout.js随手记(1)
  2. C# 使用 NPOI 库读写 Excel 文件(转载)
  3. CodeForces 13E 分块
  4. sublime text 3 使用方法
  5. ASP.NET常见面试题及答案(130题)
  6. Educational Codeforces Round 12 E Beautiful Subarrays
  7. HDU 3308 LCIS(线段树)
  8. Nginx日常操作和配置
  9. Moses 安装
  10. .net手机号码归属地查询