2013-05-20 127 views
1

我在雲服務器中有一個Web應用程序。我的Web應用程序的控制器之一是通過移動應用程序訪問URL(使用JavaScript;我使用Titanium爲Android和iOS開發)。我可以在沒有任何問題的情況下訪問GET方法,並且獲得我想要的內容,但是當我調用POST方法發送要處理的信息時,我得到Bad Server - HTTP Error。爲了保護我的URL,我使用在我的應用程序和JBoss(standalone.xml文件)中配置的BASIC認證。當我從Web應用程序內部的表單(使用JQuery Ajax)訪問POST方法時,沒關係,所以我認爲這是一個跨域問題。JBoss AS 7.1.1中的跨域POST

是否有任何配置要在JBoss中完成,以便我的Web應用程序可以接收來自任何其他域的POST調用(當然,提供正確的用戶名/密碼對)。

在此先感謝!

+1

你是說,如果你使用GET網絡調用工作正常,但如果你打開它發佈它失敗?創建一個可能沒有參數的基本Web服務方法並進行POST調用。我更可能猜測你的問題與你傳遞的參數有關。你是將它們傳遞給查詢字符串還是消息正文? – Martin

+0

我第二@Martin。如果它適用於'GET's,儘管不能保證,它*應該*也適用於'POST'。你不需要做一些配置來啓用'GET'嗎?您是否確定要發送'POST'所需的所有內容? – acdcjunior

回答

1

通常,這些跨域問題與瀏覽器有關,而不是服務器。瀏覽器將限制您使用AJAX更新到您所在頁面的域的能力。有一些解決方法,如JSONP,但我不知道這是否可以用於POST。

我們決定使用第三方代理庫HTTP Proxy Servlet。這個代理servlet允許您像使用簡單的web.xml添加到本地可訪問的域一樣進行POST。做到這一點,我們永遠不必惹JSONP,只要直JSON工作正常。

我們正在使用它來轉發幾個不同的路徑到幾個不同的服務器(您可以在同一個Web應用程序中使用此方法的多個轉發器)。我們的web.xml文件僅僅是一系列的servlet映射(每個外部RESTful服務指向基路徑):

<servlet> 
     <servlet-name>MyOneProxy</servlet-name> 
     <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class> 
     <init-param> 
     <param-name>targetUri</param-name> 
     <param-value>http://external-web-app.com/basePath</param-value> 
     </init-param> 
     <init-param> 
     <param-name>log</param-name> 
     <param-value>true</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MyOneProxy</servlet-name> 
     <url-pattern>/internalBasePath/*</url-pattern> 
    </servlet-mapping> 
相關問題