5

我正在使用闭包库来做一个简单的 POST。我认为 XhrIo 应该可以工作,因为当我使用任何其他休息客户端(如 Firefox 浏览器应用程序 RESTClient 或 Chrome 的简单休息客户端)时,我可以从我的机器向服务器发出 POST 请求,并且内容类型是应用程序/json。

但从我的申请中,我无法发帖。我正在使用以下代码

xhr = new goog.net.XhrIo;
xhr.send('http://myhost:8181/customer/add','POST', goog.json.serialize(data));

如果我保留标题默认值,我会得到这个

Encoding: UTF-8
Http-Method: POST
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

如果我尝试通过{'content-type':'application/json'}作为第 4 个参数传递来更改标题,标题更改为

Http 方法:选项
内容类型:

我不应该像 RESTClient 使用 JQuery 对 XMLHttpRequest 所做的那样,使用 Closure 库适当地更改标题吗?

如何更改标题以使其看起来像这样

Encoding: UTF-8
Http-Method: POST
Content-Type: application/json;charset=UTF-8

感谢任何帮助埃迪

4

3 回答 3

9

当您向 XHR 对象添加标头时,大多数浏览器都会执行预检请求,这就是OPTIONS您所看到的方法。不幸的是,如果您要添加自定义标头,则无法避免这种情况。将POST在 之后发送OPTIONS

这篇文章OPTIONS稍微解释了这个请求。前段时间我遇到了预检问题,如果这有帮助的话。

如果您对请求有特定问题,OPTIONS您应该编辑您的问题以包含它们;否则,这是预期的行为。

于 2012-07-07T19:39:35.303 回答
2

当我指定时,FWIW 我的也未能更新类型......

{'content-type':'application/json'}

但是,如果我将情况更正为

{'Content-Type':'application/json'}

... 有效。

去搞清楚。

于 2014-01-17T15:51:15.077 回答
0

如果您通过Content-Type请求authorization,它会将POST方法转换为OPTIONS方法,因此当我们使用ouath并传递授权令牌时,不需要时间Content-Type

所以不要传递 Content-Type所有authorization请求它不会改变你的POST方法OPTIONS

于 2017-08-17T13:46:17.303 回答