2012-08-11 61 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