HTTP請求頭
客戶端使用服務端API介面時,需建構HTTP請求頭,一般情況下是初始化一個NSMutableURLRequest,然後設定請求方法、請求體,請求頭,如下:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; [request setHTTPMethod:@"POST"]; [request setHTTPBody:bodyData]; [request setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"]; [request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)bodyData.length] forHTTPHeaderField:@"Content-Length"]; [request setValue:authorization forHTTPHeaderField:@"Authorization"];
猿題庫的網路請求(YTKNetwork)已把請求方法、請求體,請求頭等封裝好允許使用者重載自訂。請求頭通過重寫方法
- (NSDictionary *)requestHeaderFieldValueDictionary;返回一個字典,然後在方法- (AFHTTPRequestSerializer *)requestSerializerForRequest:(YTKBaseRequest *)request;
中將網路請求序列化,供建構NSURLSessionTask使用。 #表示本地可以接收壓縮格式的數據,而伺服器在處理時就將大文件壓縮再發回客戶端。 #gzip:用於UNⅨ系統的檔案壓縮,HTTP協定上的gzip編碼是一種用來改進WEB應用程式效能的技術。 WWW伺服器中安裝
的一個功能,當有人來造訪這個伺服器中的網站時,伺服器中的這個功能就將網頁內容壓縮後傳送到來訪的電腦瀏覽器中顯示出來。文字內容可壓縮到原大小的40%,使得資料傳輸速度加快。 deflate:一種使用LZ77演算法與哈夫曼編碼(Huffman Coding)的一個無損資料壓縮無專利演算法的壓縮技術。 HTTP協定中,可以對內容(也就是body部分)進行編碼, 可以採用gzip這樣的編碼。看到文檔的內容。所以我們說HTTP壓縮,其實就是HTTP內容編碼的一種。
HTTP壓縮的過程:
1、客戶端發送Http request 給Web伺服器, request 中有Accept-Encoding: gzip, deflate。 (告訴伺服器, 瀏覽器支援gzip壓縮)。- 2、伺服器接到request後, 產生原始的Response, 其中有原始的Content-Type和Content-Length。
- 3、伺服器透過gzip,來對Response進行編碼, 編碼後header中有Content-Type和Content-Length(壓縮後的大小), 並且增加了Content-Encoding:gzip. 然後把Response送到客戶端。
4、客戶端接到Response後,依照Content-Encoding:gzip來對Response 進行解碼。 取得到原始response後, 然後處理資料的顯示。
其它:compress顯示實體採用Unix的檔案壓縮程式;identity表示沒有對實體進行編碼。當沒有Content-Encoding header時, 就預設為這種情況。 gzip, compress, 以及deflate編碼都是無損壓縮演算法,用於減少傳輸封包的大小,不會導致資訊損失。 其中gzip通常效率最高, 使用最廣泛。
Content-Type
表示內容類型,一般是指客戶端存在的Content-Type,用來定義網路檔案的類型和網頁的編碼,決定客戶端將以什麼形式、什麼編碼讀取這個檔案。即用於識別發送或接收到的資料的類型,客戶端根據該參數來決定資料的開啟方式。
application/x-www-form-urlencoded:資料被編碼為名稱/值對,這是標準的編碼格式;multipart/form-data: 窗體資料編碼為一則訊息,頁上的每個控制項對應訊息中的一個部分。 text/plain: 窗體資料以純文字形式編碼,其中不含任何控製或格式字元。
1、當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form資料轉換成一個字符串(name1=value1&name2=value2…),然後把這個字串append到url後面,用?分割,載入這個新的url。
2、action為post時候,瀏覽器把form資料封裝到http body中,然後傳送到server。 如果沒有type=file的控件,用預設的application/x-www-form-urlencoded就可以了。 但如果有type=file的話,就要用到multipart/form-data了。瀏覽器會把整個表單以控制項為單位分割,並為每個部分加上Content-Disposition(form-data或file),Content-Type(預設為text/plain),name(控制項name)等訊息,並加上分割符(boundary)。
Content-Length
表示述HTTP訊息實體的傳輸長度。訊息實體長度:即Entity-length,壓縮之前的message-body的長度;
訊息實體的傳輸長度:Content-length,壓縮後的message-body的長度。 (參數拼接成的字典)
Authorization
#HTTP基本認證是用來允許網路瀏覽器,或其他客戶端程序在請求時提供以使用者名稱和口令形式的憑證的登入方式。 授權機制根據服務端定的規則決定。
認證(authentication) 和授權(authorization) 的區別:你要登機,你需要出示你的身分證和機票,身分證是為了證明你張三確實是你張三,這就是authentication;而機票是為了證明你張三確實買了票可以上飛機,這就是authorization。 你要登陸論壇,輸入用戶名張三,密碼1234,密碼正確,證明你張三確實是張三,這就是authentication;再一check用戶張三是個版主,所以有權限加精別人刪帖,這就是authorization。
POST與GET區別
站在HTML角度:
1、GET在瀏覽器回退時是無害的,而POST會再次提交請求。
2、GET產生的URL位址可以被Bookmark,而POST則不行。
3、GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。
4、GET請求只能進行url編碼,而POST支援多種編碼方式。
5、GET請求參數會被完整地保留在瀏覽器歷史記錄裡,而POST中的參數不會被保留。
6、GET請求在URL中傳送的參數是有長度限制的,而POST麼有。
7、對參數的資料型態,GET只接受ASCII字符,而POST沒有限制。
8、GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感資訊。
9、GET參數透過URL傳遞,POST放在Request body。站在HTTP的角度:
1、HTTP是基於TCP/IP的關於資料如何在萬維網中如何通訊的協定。 HTTP的底層是TCP/IP。所以GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP連結。 GET和POST能做的事情是一樣一樣的。你要為GET加上request body,給POST帶上url參數,技術上是完全行的通的。 HTTP只是個行為準則,而TCP才是GET和POST怎麼實現的基本。
2、HTTP沒有要求,如果Method是POST資料就要放在BODY中。也沒有要求,如果Method是GET,資料(參數)就一定要放在URL中而不能放在BODY中。也就是說,GET和POST與資料如何傳遞沒有關係。 HTTP協定對GET和POST都沒有長度的限制。安全不安全和GET、POST沒有關係。
3、GET產生一個TCP封包;POST產生兩個TCP封包。對於GET方式的請求,瀏覽器會把http header和data一併發送出去,伺服器回應200(返回資料);而對於POST,瀏覽器先發送header,伺服器回應100 continue,瀏覽器再發送data,伺服器回應200 ok(返回資料)。
HTTP狀態碼大全
1、1** 訊息,伺服器收到請求,需要請求者繼續執行作業
2、2* * 成功,操作成功接收並處理
3、3** 重定向,需要進一步的操作以完成請求
4、4** 客戶端錯誤,請求包含語法錯誤或無法完成請求
5、5** 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤
以上是HTTP請求頭的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。
