繁体   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