我们有一个tomcat webserver(server1),它托管了几个包含JavaScripts的网页,用于调用托管在不同网络服务器(server2)上的后端API。
当我导航到server1上的网页时,它会抛出错误 -
"阻止跨源请求:同源策略禁止读取server2 / api上的远程资源。 (原因:CORS请求失败)。"
当我直接从POST客户端调用server2上的api时,我能够得到回复。
我知道我们必须在服务器上启用CORS。但是我们应该在哪个服务器上启用CORS?它是托管网页的Tomcat服务器(server1),还是托管API的API服务器(server2)?
此外,我们尝试按照http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter添加过滤器,在Tomcat上启用CORS 但这没有帮助。
请告知。
此致 Ritwik
答案 0 :(得分:1)
CORS需要允许或拒绝呼叫的接收者。在您的方案中,您需要server2来允许server1的连接。
<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>
确保您的白名单包含正确的网址,例如https://server1:8081/
,因为所有协议,主机和端口都需要匹配!