【发布时间】:2012-04-24 13:29:38
【问题描述】:
我正在使用的服务 API 有一个给定的 GET 方法,该方法需要在请求正文中发送数据。
正文中所需的数据是由连字符分隔的 id 列表,可能非常大,因此必须在正文中发送,否则它可能会在浏览器/代理/网络服务器等链中的某处出现 foobar。请注意,我无法控制服务或 API,因此请不要提出更改建议。
我正在使用以下 jQuery 代码,但是观察提琴手中的请求/响应,我可以看到我发送的“数据”总是被转换并附加到查询字符串中,尽管我将“processData”选项设置为 false。 .
$.ajax({
url: "htttp://api.com/entity/list($body)",
type: "GET",
data: "id1-id2-id3",
contentType: "text/plain",
dataType: "json",
processData: false, // avoid the data being parsed to query string params
success: onSuccess,
error: onError
});
有谁知道我可以如何强制在请求正文中发送“数据”值? 感谢您提供任何帮助,在此先感谢。
【问题讨论】:
-
“在体内”?我能想到的唯一一件事就是 remotely 接近你所要求的是一个 POST 请求......(
POST /path HTTP/1.0\r\n<headers>\r\n\r\n<post_vars>) -
如果 API 是通用的,并且遵守 HTTP 规范,我认为它不会接受在 GET 请求正文中发送的参数,即使您设法做到了。您确定吗?有用的帖子stackoverflow.com/questions/978061/http-get-with-request-body
-
基本上这是不可能的,因为正如人们所说的那样,它不是 HTTP 规范的一部分。最后,我们不得不将 id 放在查询字符串上并翻阅结果,这样它就不会太长。我会接受给出的答案,谢谢 EndangerredMassa。
-
虽然不是标准的,但在某些情况下这很有用。发送 utf-8 编码的 GET 正文时,或传递大型 json 正文时。 Elastic Search 广泛使用这种风格。
-
发送 GET 正文是否不如发送 POST 正文安全?
标签: javascript jquery ajax