Javascript的GET、POST请求
POST、GET传输数据大小限制
HTTP协议规范没有对URL长度进行限制,也没有限制消息主体的大小,所以从理论上讲,GET、POST是没有大小限制的。那又为什么在使用过程中会有大小限制呢??
GET方式数据长度限制:
- 服务器做了GET提交数据大小的限制
- 由于GET方式发送数据是拼接在URL,GET提交时,传输数据会受到URL长度的限制,不同浏览器的长度限制还不一样
POST方式数据长度限制:
- 各个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编码,怎么办??
- 在提交数据时,建议使用jQuery的serialize方法,serialize会调用jQuery.param方法,对得到的对象进行utf-8编码,返回一个字符串
- 使用
$.ajax/$.get/$.post
方法时,data属性值为一个对象 - 使用encodeURIComponent方法对要传的数据进行utf-8编码
Javascript的GET、POST请求的更多相关文章
- ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...
- 【转】ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...
- arcgis api for JavaScript _跨域请求
arcgis api for JavaScript 中出现跨域请求是常见问题, 通常出现类似如下错误消息类似: XMLHttpRequest cannot load http://10.32.2.7 ...
- JavaScript : CORS和Ajax请求
CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是 ...
- JavaScript跨域资源请求(CORS)解决方案
跨域:当协议.主域名.子域名.端口号中任意一个不相同时都不算同一个域,而在不同域之间请求数据即为跨域请求.解决方法有以下几种(如有错误欢迎指出)以请求图片url为例: 1.通过XMLHttpReque ...
- javascript fetch 跨域请求时 session失效问题
javascript 使用fetch进行跨域请求时默认是不带cookie的,所以会造成 session失效. fetch(url, { method: 'POST', credentials: 'in ...
- JavaScript 跨站伪造请求-CSRF
CSRF: Cross-Site Request Forgery CSRF 概念 `定义`: 是一种对网站的而已利用,也被称之为one-click-attack 或者 session riding, ...
- javascript写的ajax请求
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- javascript for循环+异步请求导致请求顺序不一致
工作中遇到一个问题 for循环,再把循环出来的ID再进行二次请求 这就导致一个问题 请求结果返回顺序不一致 原因:异步请求会把回调事件放入微任务事件队列,宏任务执行完毕再执行微任务,具体参考事件队列机 ...
- 【JavaScript】新浪微博ajax请求后改变地址栏url,但页面不跳转的方案解析
新浪微博当你弹出一个视频的时候再点下一页时,原视频还在,而且地址栏的url的页数变了.对于这种网上讨论最多的方案有以下几种: 一.通过锚点Hash实现在这方面其实国内很早就有做了,比如淘宝画报,通过的 ...
随机推荐
- AutoMapper搬运工之初探AutoMapper
写在前面 知道AutoMapper很久了,但是一直没有用,最近刚好有个场景需要就用了,果然是利器.看了git上的wiki,发现内容其实wiki上写的很全面了,深入的暂时还没挖掘到.不过和群里的朋友交流 ...
- Redis学习笔记(3) Redis基础类型及命令之二
1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...
- iOS AFOAuth2Manager使用心得
github地址: https://github.com/AFNetworking/AFOAuth2Manager 这个库,不多说,实现OAuth 2.0授权访问. 确实可以减轻很大的负担,而且使用 ...
- 【Oracle】oracle之listagg分析函数
oracle分析函数——listagg篇 (1)使用listagg将多行数据合并到一行 例表: select deptno, ename from emp order by deptno, ename ...
- BZOJ 1246 & 有点不一样的概率DP
题意: 题意够坑的啊... 一个色子有n个面,第k次掷出一个加上这个k.求掷出所有面的期望值. 我一直以为值是色子面上的... 那么问题来了在色子面上怎么做...n还是1w级别... SOL: 对着理 ...
- an excellent capability of C# language and compiler
Sometimes you want to write code that works for different primitive types, and as C# doesn't support ...
- debian C++ OTL库 用 unixodbc 连接 mysql 小记
这个东东也是折腾了几天,网上很多文章可能已经过时,所以写下不同,以备后用. 参考网址: http://blog.csdn.net/genganpeng/article/details/7402229 ...
- 2016huasacm暑假集训训练四 数论_A
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/F 题意:狼捉兔子,兔子躲在n个洞中一个,这n个洞围成一个圈,狼会从第0号洞开始,搜 ...
- java核心技术第一卷
sell窗口(dos窗口命令)中要注意大小写: 编译java文件需要加上扩展名,运行java.class时只要文件名java,不需要扩展名:
- 利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制
首先要自己配置并打开受控端的WEB远程桌面服务,这个在“添加/删除windows组件”里有,我只在windows 2003 server里试过,没试过XP.下面我们在客户端安装微软提供的远程桌面客户端 ...