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. Python2 连接MySQL

    先安装MySQL-python yum install -y MySQL-python 测试代码: # -*- coding: utf-8 -*- import os import MySQLdb i ...

  2. Leetcode Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...

  3. [Python学习] python 科学计算库NumPy—矩阵运算

    NumPy库的核心是矩阵及其运算. 使用array()函数可以将python的array_like数据转变成数组形式,使用matrix()函数转变成矩阵形式. 基于习惯,在实际使用中较常用array而 ...

  4. ECMAScript 6(ES6)有什么新东西

    你可能已经听说过ECMAScript 6,JavaScript的下一个版本,它有一些非常棒的新功能.这些功能略微复杂,在简单的脚本和复杂的应用中都可以使用.在这篇文章中,我们将挑选一些ES6的功能进行 ...

  5. VS2013 配置pthread

    参考:http://blog.csdn.net/qianchenglenger/article/details/16907821 一.下载地址 ftp://sourceware.org/pub/pth ...

  6. Odoo 8.0 new API 之Environment

    """ An environment wraps data for ORM records: - :attr:`cr`, the current database cur ...

  7. 如何完全卸载oracle11g?

    步骤一: 停止Oracle的所有服务. 步骤二: 运行%oracle_home%\app\Administrator\product\11.2.0\dbhome_1\deinstall \deinst ...

  8. 动态生成linearLayout

    LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL) ...

  9. Nginx 和 Apache 开启目录浏览功能

    1.Nginx 在相应项目的 Server 段中的 location 段中,添加 autoindex on.例如: server { listen ; server_name www.dee.prac ...

  10. 再谈java两种变量(基本类型和引用类型)(综合各路大神)

    基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. int  a:   a=250: //声明变量a的同时,系统给a分配了数据空间. 引用类型: 是一个对象类型,值是什么呢? ...