2014-10-28 66 views
1

我正在開發一個HTML5應用程序,它必須從傳統Web服務(Jax-Ws)獲取一些值,因此我使用jQuery.soap來查詢這些Web服務以獲取響應。我已經使用SOAP UI嘗試了我的請求的正確性,並且它們正常工作。如何在jBoss中啓用CORS

從我的HTML5客戶端我無法接收來自服務器的SOAP響應,因爲在響應中沒有Allow-Control-Allow-Origin標頭設置爲*。所以,請求的來源被認爲是不允許的,服務器的響應是錯誤響應。

錯誤的消息,我調試使用Firebug + Firefox的HTML5項目,方法是:

鎖定交叉起源的請求:在原點的標準不允許遠程資源的讀取。您可以通過將資源移至相同的域或激活CORS來解決問題。

如何在jBoss中啓用CORS?

+0

您需要使用Servlet過濾器像這樣的:http://software.dzhuvinov.com/cors-filter.html – mccannf 2014-10-28 18:08:46

回答

2

您需要處理您的遺留網絡服務以解決問題。正如上面的mccannf所說的,你需要在web.xml中添加CORS過濾器。

您可以使用從thetransactioncompany一個解決方案:

的web.xml:

<filter> 
    <filter-name>CORS</filter-name> 
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>CORS</filter-name> 
    <url-pattern>*</url-pattern> 
</filter-mapping> 

行家:

<dependency> 
    <groupId>com.thetransactioncompany</groupId> 
    <artifactId>cors-filter</artifactId> 
    <version>2.5</version> 
</dependency> 

如果您使用的Apache Tomcat,您可以使用內置的CorsFilter:

web.xml:

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>CorsFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

的pom.xml:

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.42</version> 
    <scope>provided</scope> 
</dependency> 
+0

謝謝這解決了麻煩創建過濾器並測試它。作品完美無瑕。 – cabaji99 2018-01-17 16:01:27