我正在从 jQGrid 调用具有以下绑定的 Guice servlet:
@Produces({MediaType.APPLICATION_JSON})
@Path("/{param}")
public String getJson(@PathParam("param") String param) {
...
return return json.toString();
}
直接请求url,可以看到json。当 jqgrid 执行请求时,我得到 405 method not allowed response。当返回页面没有将 Content-type 设置为“text/json”(jqgrid 在这里不是很灵活)时,我已经看到过这种情况。
这是请求:键值请求 POST /myapp/json/jqgrid/json ... HTTP/1.1 x-requested-with XMLHttpRequest Accept-Language en-us Referer http://localhost:8080/myapp/myPage ... Accept application/json, text/javascript, / Content-Type application/x-www-form-urlencoded Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)主机 localhost:8080 Content-Length 63 Connection Keep-Alive Cache-Control no-cache
这是响应:键值响应 HTTP/1.1 405 方法不允许服务器 Apache-Coyote/1.1 允许 GET,OPTIONS,HEAD Content-Type text/html;charset=utf-8 Content-Length 1034
关于如何让 guice servlet 将 Content-type 设置为“text/json”并允许响应的任何想法?