簡體   English   中英

Google App Engine中的網址大小

[英]URL Size in Google App Engine

我正在GAE托管的應用程序中調用servlet。 我遇到的問題是我的請求網址大於2048個字符,並且出現400錯誤的請求錯誤。 雖然這里提到我們可以用10MB的數據進行請求。 那么我們如何發送包含10MB數據的請求呢? 我目前正在使用免費配額。 很久以前有人問過類似的問題 ,但尚未回答。

在請求中發送兆字節數據寧可保證將POST或PUT作為請求方法。 這樣,您可以發送的請求總數達到10 MB,就像您在參考文章中注意到的那樣。

urlfetch錯誤模塊API文檔中概述了出現400錯誤的原因。 允許的最大URL長度為2048個字符。

當前存在增加此長度的功能請求 盡管這種情況不太可能在不久的將來改變。 您可以為問題加注星標,以獲取進一步的更新和/或在評論中提供您的用例。

撇開AppEngine的限制,將10MB的數據放入URL並沒有多大意義。

當您查看HTTP協議時, GET -request看起來像這樣

GET /path/to/resource?possibleParam=value HTTP/1.1
Host: www.example.com

像這樣的POST請求

POST /path/to/resource?possibleParam=value HTTP/1.1
Host: www.example.com
Content-Type: */*; charset=utf-8
Content-Length: 4242

here come the actual data with a length of 4242 bytes

因此,如果您允許大量數據,則GET請求的URI中將意味着服務器不知道為接收整個uri必須分配多少內存。 因此,為了獲得更好的性能,很自然地會限制GET請求的長度,並強迫您使用POST請求,而在實際發送大量信息之前必須告知Content-Length

讓我們看一下其他Stackoverflow用戶的評論

tx802說:

發布您的數據?

Alex Martelli在提到允許的最大URL長度時說:

它永遠不會擴展到10 MB -顯然需要POST或PUT(其中數據進入主體,而不是URL!)

現在這應該有意義,因為從協議角度來說,將兆字節的數據作為URI推送沒有多大意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM