1. 程式人生 > >get,post資料長度的限制

get,post資料長度的限制

做為一種經驗積累,這些問題、原因及解決辦法將被列入Checklist,那麼:
第一個問題:URL引數上限的提法準確嗎?上限是多少?
第二個問題:為什麼POST時資料有限制?限制是128K嗎? 
二、問題分析
1、第一個:
1)URL不存在引數上限的說法。該問題實際是IE對URL有長度限制的問題。
2)HTTP協議規範也沒有對URL長度進行限制。這個限制是特定的瀏覽器及伺服器對它的限制。IE對URL長度的限制是2083位元組(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於作業系統的支援。[參1]
3)“可變長度的引數通過URL方式傳遞”實際是說提交表單時使用了GET方法,而不是POST方法。造成這種潛在錯誤的是使用GET方法提交表單資料。因為GET方法將資料放在URL裡傳遞給伺服器處理。
4)注意這個限制是整個URL長度,而不僅僅是你的引數值資料長度。
5)既然是IE對URL長度的限制,那麼不管是GET方法還是POST方法都存在這個限制。
(關於FORM的GET和POST方法具體內容請參考相關資料[參2]) 
建議:
1)瞭解應用程式所在的環境,如Web應用的瀏覽器、伺服器環境,瞭解其特定的引數限制情況。
2)提交複雜資料儘量使用POST方法。注意FORM不寫method屬性時預設是使用GET方法。
結論(寫入Checklist):
對使用GET方法提交資料時,在IE環境下,需要考慮URL長度2083位元組的限制。
2、第二個:
1)理論上講,POST是沒有大小限制的。HTTP協議規範也沒有進行大小限制。
2)“POST資料量存在128K的大小限制”不夠準確,POST資料是沒有限制的,起限制作用的是伺服器的處理程式的處理能力。
3)對於ASP程式,Request物件處理每個表單域時存在100K的資料長度限制。但如果使用Request.BinaryRead則沒有這個限制。對於需要處理超過100K表單域資料的解決辦法,請參考後面的[參3]。
4)由這個延伸出去,對於IIS 6.0,微軟出於安全考慮,加大了限制[參4]。我們還需要注意:
    IIS 6.0預設ASP POST資料量最大為200KB,每個表單域限制是100KB。
    IIS 6.0預設上傳檔案的最大大小是4MB。
    IIS 6.0預設最大請求頭是16KB。
    IIS 6.0之前沒有這些限制。
建議:
1)弄清楚執行環境的預設設定值有助於你的設計及對出現的問題做快速的解決。
2)應該考慮伺服器版本。各個版本的IIS對這些引數的預設設定都不一樣,有必要的話,找資料整理出一份對照表。這樣開發與測試時都有個參考。
3)IIS 6.0的這些限制實際只是它的預設設定值而已,實際應用環境你可以修改它們。
    在WINNT\system32\inetsrv\MetaBase.xml裡預設定義了:
        AspBufferingLimit="4194304"           對應於上傳檔案最大大小
        AspMaxRequestEntityAllowed="204800"    對應於POST最大資料量
結論(寫入Checklist):
使用ASP時,需要考慮POST表單每個域一般讀取處理時有100KB的限制。充分考慮是否使用Request.Binary

相關推薦

get,post資料長度限制

做為一種經驗積累,這些問題、原因及解決辦法將被列入Checklist,那麼: 第一個問題:URL引數上限的提法準確嗎?上限是多少? 第二個問題:為什麼POST時資料有限制?限制是128K嗎?  二、問題分析 1、第一個: 1)URL不存在引數上限的說法。該問題實際是IE對URL有長度限制的問題。

GET POST方法長度限制

  1.    Get方法長度限制 Http Get方法提交的資料大小長度並沒有限制,HTTP協議規範沒有對URL長度進行限制。這個限制是特定的瀏覽器及伺服器對它的限制。 如:IE對URL長度的限制是2083位元組(2K+35)。 下面就是對各種瀏覽器和伺服器的最大處理能力

URL 長度POST 資料長度及 COOKIE 長度限制

目錄: 1. URL長度限制 在Http1.1協議中並沒有提出針對URL的長度進行限制,RFC協議裡面是這樣描述的,HTTP協議並不對URI的長度做任何的限制,伺服器端必須能夠處理任何它們所提供服務多能接受的URI,並且能夠處理無限長度的U

關於HTTP的GET請求引數長度限制問題和我對中國式教育的吐槽

隱隱約約記得,http的get請求的引數長度是有限制的,所以當從客戶端向服務端傳送資料時,如果資料量太大,那麼就不要用get方法,而要用post方法。 我相信,很多人同我一樣,對這個問題的認識僅僅停留在上一段文字所描述的水平內,含糊不清,似懂非懂,好像知道,但是

tomcat post引數長度限制

Tomcat 預設的post引數的最大大小為2M, 當超過時將會出錯,可以配置maxPostSize引數來改變大小。 maxPostSize=“0” 0表示不限制大小 在tomcat資料夾下的conf檔案中的server.xml 配置:   <Connec

Java中解決Servlet獲取請求(GET/POST)資料資料亂碼問題

一:Servlet獲取請求資料時亂碼問題解決方法   <1> get方式資料亂碼只能使用下面的方法解決    String username = request.getParameter(

使用postman模擬與後端flask的Get/Post資料互動

GET請求 首先我們看一下後端get邏輯: def get(self): """ :return a age math the query name: """ name = reques

Get/POST方法提交的長度限制

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Tomcat伺服器如何配置Post提交資料長度不受限制

從 apache-tomcat-7.0.63版本開始,引數 maxPostSize 的含義就變了: 如果將值設定為 0,表示 POST 最大值為 0,如果設定不限制 POST 大小需要將值設定為 -1。,在此版本之前設定為 0 表示不限制 POST 大小。配置步驟:例如找到a

關於http get和form表單post提交資料大小限制

之前我去面試,面試的人問了我些問題,其中令我印象深刻的就是如題的兩個,回來後特意去查找了一下,關於http get提交資料上限,之前只知道資料上限差不多是幾kb大小,具體為什麼卻沒有了解 httpget是通過url來傳遞資料,url不存在上限的問題,http協

post提交數據長度限制問題

timeout base64 dir pro tor redirect 數據 ont 長度 最近做手機拍照照片上傳時,由於圖片較大,base64後字符串長度太長,所以提交失敗。 修改Tomcat服務器的maxPostSize=0,解決完成! <Connect

C# GET/POST FLASK資料交換

C#端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using

Excel如何限制輸入資料長度

平常使用Excel的網友在製作工作表格時會遇到這樣的需求,在製作用來他人填寫資訊的表格中對某些單元格做輸入資料長度限制會帶來很大便利,那麼如何進行設定呢,接下來我將一步步進行說明: 工具/原料 Excel 方法/步驟 第一步,準備資料。首先開啟Excel並新建一

一般處理程式獲取getpost資料

  ashx具體程式碼: public class GuanWangWC : IHttpHandler { public void ProcessRequest(HttpContext context) {

Volley網路框架之快取載入圖片、Postget資料請求

         前言:Volley作為主流網路框架之一,必然有它的優點。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集於了一身, 它的常用在資料量不大,但網路通訊頻繁,而且有圖片快取

Android Retrofit Post請求引數長度限制問題 retrofit sendto failed: ECONNRESET (Connection reset by peer)

retrofit sendto failed: ECONNRESET (Connection reset by peer)【android客戶端Post請求引數長度限制(引數過大)】解決辦法   一、問題的出現 post請求後臺,當引數字元太長超過900字時會報sendto

開始一個koa2 專案需要用到的基礎配置2--static靜態資源,get/post獲取資料

本文基於開始一個koa2 專案需要用到的基礎配置1 這篇是第二篇 1配置靜態檔案目錄。這個簡單; 安裝’koa-static’ npm install koa-static --save 新建目錄st

使用get,post,httpclient三種方式向伺服器提交文字資料

/** * HTTP請求 * @author kesenhoo * */ public class HttpRequest { public static boolean sendXML(String path, String xml)throws Except

手動get post請求網路(面向http協議向伺服器提交資料

private void requestNetWorkGet() { try { //把要提交的資料放在url裡,accounts pwd為使用者輸入 String path = "http://192.168.1.100:8080/web/LoginServer" +

python用 GET,POST,PUT,DELETE方式向HTTP提交資料

、JSON簡介 JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd E