2016-10-17 50 views
1

我有一個運行在端口8081上的本地Tomcat安裝,暴露了一個REST API。我的開發Web服務器在端口9000上運行。現在我想使用angular的$http從瀏覽器中運行的JavaScript代碼調用REST。這顯然是一個CORS電話,我有錯誤:對Tomcat REST API的CORS訪問

"No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:9000 ' is therefore not allowed access."

我添加了一個過濾器,以Tomcat配置建議,由文檔:

<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> 

這對我GET請求工作完全正常,但現在我想執行POST請求並且錯誤又回來了。爲什麼這樣?該篩選器是否也允許POST

回答

0

您需要添加一些init params

<init-param> 
    <param-name>cors.allowed.methods</param-name> 
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value> 
</init-param> 
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Last-Modified</param-value> 
+0

已經嘗試過,但沒有什麼區別。 – Daniel

+0

我更新了答案,參數值也是必需的 –

+0

對不起,但它仍然無法正常工作。我使用了您提供的文檔鏈接中的高級配置示例。這應該包含必要的一切,但沒有... – Daniel