我正在使用的服务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 });
有谁知道我可以如何强制在请求正文中发送“数据”值?感谢您的任何帮助,在此先感谢。
通常,这不是系统使用GET请求的方式。因此,很难使您的库发挥作用。实际上,该规范说:“如果请求方法是GET或HEAD的区分大小写的匹配项,则好像数据为空。” 因此,除非您使用的浏览器不遵守规范的那一部分,否则我认为您不走运。
您可能可以在自己的服务器上为POST ajax请求设置一个端点,然后将其在服务器代码中重定向到带有主体的GET请求。
如果您不是绝对以主体作为数据来绑定GET请求,则有两个选择。
带有数据的POST: 这可能是您想要的。如果要传递数据,则可能意味着您正在修改某些模型或在服务器上执行某些操作。这些类型的操作通常是通过POST请求完成的。
使用查询字符串数据进行GET: 您可以将数据转换为查询字符串参数,然后将其以这种方式传递给服务器。
url: 'somesite.com/models/thing?ids=1,2,3'