我们有一个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/

10-16 08:20