jQGrid から、次のバインディングを持つ Guice サーブレットへの呼び出しを行っています。
@Produces({MediaType.APPLICATION_JSON})
@Path("/{param}")
public String getJson(@PathParam("param") String param) {
...
return return json.toString();
}
URL を直接要求すると、JSON が表示されます。jqgrid がリクエストを実行すると、405 method not allowed レスポンスが返されます。返されるページの Content-type が「text/json」に設定されていない場合に、これが発生するのを見たことがあります (ここでは jqgrid はあまり柔軟ではありません)。
ここにリクエストがあります: Key Value Request 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 コンテンツの長さ 63 接続 キープアライブ キャッシュ制御 キャッシュなし
レスポンスは次のとおりです: キー 値 レスポンス HTTP/1.1 405 Method Not Allowed Server Apache-Coyote/1.1 Allow GET,OPTIONS,HEAD Content-Type text/html;charset=utf-8 Content-Length 1034
Guice サーブレットで Content-type を「text/json」に設定し、応答を許可する方法について何か考えはありますか?