GET 请求中 JSON 参数的长度限制
Length limit on JSON parameters on GET request
我的 Android 应用正在对我的服务器 API 进行两次 GET 调用。在第一个中,是这样的,其中参数 code
是一个 256 字符的字符串。
$.getJSON( myServerEndpoint, {
action: "doStuff1",
username: $("#username").val(),
code: my256charString,
format: "json"
})
.done(function( data ) {
doStuff2Response(data);
});
第二个是这个,其中参数code
是一个5120字符的字符串。两者都到达相同的服务器端点。
$.getJSON( myServerEndpoint, {
action: "doStuff2",
username: $("#username").val(),
code: my5120CharString,
format: "json"
})
.done(function( data ) {
doStuff2Response(data);
});
当我从连接到 WiFi 或大多数移动数据提供商的同一设备和同一用户呼叫它们时,它工作得很好。
但是,当我从 Vodafone 数据连接进行连接时,第二个请求从未到达服务器。除了 Vodafone 的参数长度有限制外,我找不到任何其他解释。
有什么想法或解决方案吗?
好的,就这样吧。首先,阅读:What is the maximum length of a URL in different browsers?
是的,"URL" 的长度有限制,但我不知道如何解释为什么它只发生在 vodafone 上。另外,我什至不知道请求是如何通过他们的服务器的。
关于解决方案,当负载太大时,您应该考虑从 GET 请求更改为 POST 请求。
快速解决方案:对消息的 code
部分进行 Base64 编码。缺点:您必须在服务器上解码。不过,这是大多数语言的标准功能。
如果您已经在使用 Base64 或类似的密码,那么 Blob 呢? https://developer.mozilla.org/en-US/docs/Web/API/Blob
chromano的建议也是spot-on,换成POST肯定会得到无限PostBody。缺点:必须自己 JSON.stringify 和 JSON.parse,如果你想将此 URL 公开给用户(比如作为 link 共享),它现在不能携带相同的信息(URL 是 GET 请求)。
我的 Android 应用正在对我的服务器 API 进行两次 GET 调用。在第一个中,是这样的,其中参数 code
是一个 256 字符的字符串。
$.getJSON( myServerEndpoint, {
action: "doStuff1",
username: $("#username").val(),
code: my256charString,
format: "json"
})
.done(function( data ) {
doStuff2Response(data);
});
第二个是这个,其中参数code
是一个5120字符的字符串。两者都到达相同的服务器端点。
$.getJSON( myServerEndpoint, {
action: "doStuff2",
username: $("#username").val(),
code: my5120CharString,
format: "json"
})
.done(function( data ) {
doStuff2Response(data);
});
当我从连接到 WiFi 或大多数移动数据提供商的同一设备和同一用户呼叫它们时,它工作得很好。
但是,当我从 Vodafone 数据连接进行连接时,第二个请求从未到达服务器。除了 Vodafone 的参数长度有限制外,我找不到任何其他解释。
有什么想法或解决方案吗?
好的,就这样吧。首先,阅读:What is the maximum length of a URL in different browsers?
是的,"URL" 的长度有限制,但我不知道如何解释为什么它只发生在 vodafone 上。另外,我什至不知道请求是如何通过他们的服务器的。
关于解决方案,当负载太大时,您应该考虑从 GET 请求更改为 POST 请求。
快速解决方案:对消息的 code
部分进行 Base64 编码。缺点:您必须在服务器上解码。不过,这是大多数语言的标准功能。
如果您已经在使用 Base64 或类似的密码,那么 Blob 呢? https://developer.mozilla.org/en-US/docs/Web/API/Blob
chromano的建议也是spot-on,换成POST肯定会得到无限PostBody。缺点:必须自己 JSON.stringify 和 JSON.parse,如果你想将此 URL 公开给用户(比如作为 link 共享),它现在不能携带相同的信息(URL 是 GET 请求)。