Javascript的GET、POST请求
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:crm.piao.qunar
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-alivejquery源码在线
Content-Length:190
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:QN1=wKgZEVYbR4wc9UPaYgXcAg==; QN99=3984;
Host:crm.piao.qunar:8080
Origin:crm.piao.qunar:8080
Pragma:no-cache
Referer:crm.piao.qunar: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:crm.piao.qunar?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:8080
Origin:crm.piao.qunar:8080
Pragma:no-cache
Referer:crm.piao.qunar: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编码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论