内容类型 json 返回 http 404
Posted
技术标签:
【中文标题】内容类型 json 返回 http 404【英文标题】:Content-type json returns http 404 【发布时间】:2012-08-11 06:15:53 【问题描述】:在第 3 方服务器中,当带有 EXt-JS 4 的 Web 应用程序(服务器端 Struts 2)使用 content-type: application/json; 发出 ajax 请求时; charset=utf-8 网络服务器返回页面未找到 http 404/403 状态码。但是,如果我们通过浏览器 url 栏使用纯文本/html 发出相同的请求,则会收到响应。会有什么问题。
有没有办法通过发送不同的内容类型来模拟请求,我尝试过下面的 html 表单,但它只发送 Content-Type:application/x-www-form-urlencoded
<html>
<body>
<form action="http://abc.com/abc?" method="post" enctype="application/json; charset=utf-8">
<input type='submit'/>
</form>
</body>
</html>
服务器或 tomcat 可以单独限制特定的内容类型吗?
<action name="abc" class="com.stutzen.rhs.abc.Abc" method="abc">
<interceptor-ref name="json">
<!--param name="contentType">application/json</param-->
</interceptor-ref>
<result type="json">
<param name="excludeProperties">
data,model
</param>
</result>
</action>
【问题讨论】:
当然,服务器可以分析请求标头并根据找到的内容返回响应。 【参考方案1】:使用 Ext.Ajax.request 发出请求时,您可以在 Ext 端设置任意标头:
Ext.Ajax.request(
url: '/foo',
headers:
'Content-Type': 'text/html'
);
但是,它看起来更像是一种 hack,而不是真正的解决方案;您需要找出服务器期望的内容并相应地进行操作。
【讨论】:
那是很好的样本,我试过了,得到了回应。但是在带有 json 插件的服务器端 struts 中,它需要 content-type 作为 application/json。但无论如何,我得到了一个空白的结果页面。因此,类已加载,它正在为除 application/json 以外的内容类型提供服务,那么为什么不单独为它服务。在问题中也提供了struts配置。 我对 Struts 配置不熟悉,无法帮你。以上是关于内容类型 json 返回 http 404的主要内容,如果未能解决你的问题,请参考以下文章
FileSystemResource 以内容类型 json 返回
Response::json() 返回 text/html 作为内容类型
如何在 CakePHP 中为 JSON 返回正确的内容类型?
Spring MVC REST - 根据请求内容类型返回 xml 或 json