我们有一个tomcat网络服务器(server1),该服务器托管着几个包含JavaScript的网页,以调用托管在不同网络服务器(server2)上的后端API。
当我导航到server1上的网页时,它抛出错误-
“跨域请求被阻止:相同来源策略禁止读取server2 / api上的远程资源。(原因:CORS请求失败)。”
当我直接从POST客户端调用server2上的api时,我可以得到响应。
我了解我们必须在服务器上启用CORS。但是我们应该在哪个服务器上启用CORS?托管网页的是Tomcat服务器(服务器1),还是托管API的API服务器(服务器2)?
另外,我们尝试通过根据http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter添加过滤器在Tomcat上启用CORS
但这没有帮助。
请指教。
问候,
里特维克
最佳答案
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>
确保白名单包含正确的URL,例如
https://server1:8081/
,因为所有协议,主机和端口都必须匹配!http://enable-cors.org/server_tomcat.html
关于javascript - Tomcat的CORS问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33134561/