首頁 php教程 php手册 HTTP中GET长度问题

HTTP中GET长度问题

Jun 06, 2016 pm 08:13 PM
get http 介面 長度 問題

曾做过一个plist的接口,需要将参数编码后放在URL上传递,编码后的URL很长,长到让人担心这么传有没有问题?要弄清这个问题得先弄明白HTTP报文请求格式,借用网上一张图片: 一个HTTP请求由四部分组成:Request Line、Headers、空行和Request Body。见下面GE

曾做过一个plist的接口,需要将参数编码后放在URL上传递,编码后的URL很长,长到让人担心这么传有没有问题?要弄清这个问题得先弄明白HTTP报文请求格式,借用网上一张图片:

http

一个HTTP请求由四部分组成:Request Line、Headers、空行和Request Body。见下面GET示例:

http_get

可以看到GET请求时,数据放在Request Line中Request-URI传递;若发送POST请求时,数据则放在Request Body中传递,不同的地方决定了其享受不同的待遇。

HTTP手册上是这么说的:

HTTP协议不会对URI做任何限制,服务端必须能处理不限长度的URI,如果不能处理则返回414

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1

虽然HTTP协议中并未限制Request-URI的大小,但不同浏览器和WEB服务器则有不同的限制。

浏览器限制

不同的浏览器限制不同,若通过浏览器访问,2000个字符长度以内基本上都可以兼容。

WEB服务器

这里在SAE上写了个脚本,访问地址http://ipbt.vipsinaapp.com/demo/Http/request.php?len=8151,看到可以正常访问,若len参数改为8152则提示

414 Request-URI Too Large

可见这是当前NGINX环境下的极限值,此时Request Line的总长度为8190。同样的请求本地Apache配置的服务器,当Request Line长度超过8190时,Aapche也会提示

Request-URI Too Large

The requested URL's length exceeds the capacity limit for this server.

可见Nginx和Apache在请求行的长度控制上是一致的,默认都是8190个字符长度。但同时该值也是可以调整的,Nginx中可以通过large_client_header_buffers来控制请求行的最大长度;Apache中可设置LimitRequestLine的值来控制。

LimitRequestLine指令
语法:LimitRequestLine bytes
默认:LimitRequestLine 8190
这个指令用来设置客户端发送的HTTP请求行的最大字节数。请求行包括HTTP方法、URL、协议版本等。因此LimitRequestLine指令能够限制URL的长度,服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。
一般情况下,不要更改这个值,使用默认即可。

当把本地Apache LimitRequestLine 调整为 8190000后,加3个0在请求也没问题。。。

GET /ipbt/1/demo/Http/response.php?s=11111111.....
Host: localhost:80
Connection: Close
HTTP/1.1 200 OK
Date: Tue, 05 Aug 2014 23:19:17 GMT
Server: Apache/2.2.11 (Win32) PHP/5.4.7
X-Powered-By: PHP/5.4.7
Content-Length: 14
Connection: close
Content-Type: text/html
Length:8000000
登入後複製

可见GET请求实际上也是没有长度限制的,只是浏览器和WEB服务器做了控制。。。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

電腦主機板內部介面都有什麼 推薦電腦主機板內部介面介紹 電腦主機板內部介面都有什麼 推薦電腦主機板內部介面介紹 Mar 12, 2024 pm 04:34 PM

我們在電腦組裝的過程中,安裝過程雖然簡單,不過往往都是在接線上遇到問題,經常有裝機用戶誤將CPU散熱器的供電線插到了SYS_FAN上,雖然風扇可以轉動,不過在開機可能會有F1報錯“CPUFanError”,同時也導致了CPU散熱器無法智慧調速。下面裝機之家分享一下電腦主機板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT介面知識科普。電腦主機板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT介面知識科普1、CPU_FANCPU_FAN是CPU散熱器專用接口,12V工作

Go語言中常見的程式設計範式和設計模式 Go語言中常見的程式設計範式和設計模式 Mar 04, 2024 pm 06:06 PM

Go語言作為一門現代化的、高效的程式語言,擁有豐富的程式設計範式和設計模式可以幫助開發者編寫高品質、可維護的程式碼。本文將介紹Go語言中常見的程式設計範式和設計模式,並提供具體的程式碼範例。 1.物件導向程式設計在Go語言中,可以使用結構體和方法實現物件導向程式設計。透過定義結構體和給結構體綁定方法,可以實現資料封裝和行為綁定在一起的物件導向特性。 packagemaini

PHP介面簡介及其定義方式 PHP介面簡介及其定義方式 Mar 23, 2024 am 09:00 AM

PHP介面簡介及其定義方式PHP是一種廣泛應用於Web開發的開源腳本語言,具有靈活、簡單、強大等特性。在PHP中,介面(interface)是一種定義多個類別之間公共方法的工具,實現了多態性,讓程式碼更加靈活和可重複使用。本文將介紹PHP介面的概念及其定義方式,同時提供具體的程式碼範例展示其用法。 1.PHP介面概念介面在物件導向程式設計中扮演著重要的角色,定義了類別應

如何使用C++實作HTTP流傳輸? 如何使用C++實作HTTP流傳輸? May 31, 2024 am 11:06 AM

如何在C++中實現HTTP流傳輸?使用Boost.Asio和asiohttps客戶端程式庫建立SSL流套接字。連接到伺服器並發送HTTP請求。接收HTTP響應頭並列印它們。接收HTTP回應正文並列印它。

PHP數組長度限制是多少? PHP數組長度限制是多少? Mar 13, 2024 pm 06:30 PM

PHP中數組的長度並沒有固定的限制,它可以根據系統的記憶體大小來動態調整。在PHP中,陣列是一種非常靈活的資料結構,可以儲存任意數量的元素,每個元素可以是任意類型的值,甚至可以是另一個陣列。 PHP數組的長度限制主要取決於系統的記憶體大小和PHP配置的記憶體限制。一般來說,如果系統的記憶體夠大,且PHP的記憶體限制夠高,陣列的長度可以很大。但是,如果系統記憶體不足或

Java 中介面與抽象類別在設計模式中的應用 Java 中介面與抽象類別在設計模式中的應用 May 01, 2024 pm 06:33 PM

介面和抽象類別在設計模式中用於解耦和可擴展性。介面定義方法簽名,抽象類別提供部分實現,子類別必須實作未實現的方法。在策略模式中,介面用於定義演算法,抽象類別或具體類別提供實現,允許動態切換演算法。在觀察者模式中,介面用於定義觀察者行為,抽象類別或具體類別用於訂閱和發布通知。在適配器模式中,介面用於適應現有類,抽象類或具體類可實現相容接口,允許與原有程式碼互動。

透視鴻蒙系統:功能實測與使用感受 透視鴻蒙系統:功能實測與使用感受 Mar 23, 2024 am 10:45 AM

鴻蒙系統作為華為推出的全新作業系統,在業界引起了不小的轟動。作為華為在美國禁令之後的全新嘗試,鴻蒙系統被寄予了厚望和期待。近日,我有幸得到了一部搭載鴻蒙系統的華為手機,經過一段時間的使用和實測,我將分享一些關於鴻蒙系統的功能實測和使用感受。首先,讓我們來看看鴻蒙系統的介面和功能。鴻蒙系統整體採用了華為自家的設計風格,簡潔清晰,操作流暢。在桌面上,各種

Curl Get指令的範例 Curl Get指令的範例 Mar 20, 2024 pm 06:56 PM

在Linux中,URL或Curl客戶端是一個流行的命令列實用程序,允許您使用HTTPS、HTTP、FTP等多種協定在網路上傳輸資料。它允許您使用其get、post和request方法發送和接收資料。其中,你需要經常使用“get”方法。因此,學習各種方法和各種選項,你可以用來提高你的生產力變得至關重要。 「執行捲曲操作非常簡單,只需輸入幾個簡單的命令即可完成。儘管這看似簡單,但許多用戶並未充分認識到其潛力。因此,這篇簡短指南提供了一些關於在Linux系統中使用“curlget”命令的實例。”Curl

See all articles