2012-08-11 69 views
0

在第三方服务器中,当使用EXt-JS 4的Web应用程序(服务器端和Struts 2)发出与内容类型的Ajax请求时:application/json; charset = utf-8 webserver返回页面未找到http 404/403状态码。但是,如果我们通过浏览器网址栏使用纯文本/ html发出相同的请求,则会收到响应。会有什么问题。内容类型json返回http 404

有任何方法来模拟由在不同的内容类型发送请求,我试图下面的HTML形式,但它仅发送内容类型:应用/ X WWW的窗体-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> 
+0

当然,服务器可以分析请求头并根据它找到的内容返回响应。 – zb226 2012-08-11 09:13:30

回答

1

您可以Ext.Ajax.request做出请求时,在分机侧设置任意头:

Ext.Ajax.request({ 
    url: '/foo', 
    headers: { 
     'Content-Type': 'text/html' 
    } 
}); 

但是它看起来更像是一个黑客不是真正的解决方案;你需要找出服务器的期望和相应的处理。

+0

这是很好的示例,我试过了,得到了回应。但在使用json插件的服务器端struts中,它需要内容类型为application/json。但无论如何,我有一个空白的结果页面。所以类被加载,并且它正在为内容类型的请求提供其他应用程序/ json然后为什么不为它单独。在问题中也提供了struts配置。 – arvindwill 2012-08-12 02:26:55

+0

因为我不熟悉它,所以我无法帮助您使用Struts配置。 – 2012-08-12 03:17:50