使用反向代理时 CORS 选项请求失败

使用反向代理时 CORS 选项请求失败

我使用的是安装了 Tomcat 服务器的 Apache 2 服务器。Tomcat 服务器包含 Geoserver 和 Web 客户端,后者能够向 Geoserver 发送 POST 请求。我想避免在 URL 中指定端口,因此我为 Apache 2 配置了反向代理:

<VirtualHost *:80>
   ServerName localhost
   ProxyPreserveHost On
   DocumentRoot /var/www/html
   ProxyPass /.well-known !
   ProxyPass / http://localhost:8080/crowdmapping/
   ProxyPassReverse / http://localhost:8080/crowdmapping/
   Header always set Access-Control-Allow-Origin "*"
   Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
   Header set Access-Control-Allow-Headers "Content-Type"
</VirtualHost>

如果我通过反向代理配置部分中指示的 URL 访问 Web 客户端ServerName,则使用 PC 上的 Firefox 浏览器会收到 CORS 错误。在移动设备上使用 Safari、Chrome 和 Firefox 也会发生这种情况(使用 iPhone 12 和 iPad Air 4 进行测试)。

在 Firefox 网络选项卡中,出现“CORS Missing Allow Origin”错误,这与预检请求有关(OPTIONS)。通过在 PC 上使用 Chrome 浏览器或 MS Edge,一切正常。

如果通过 中配置的 URL 访问 Web 客户端,则ProxyPass一切都可以正常运行(即使使用 Firefox 和移动设备)。

通过调查这一事件,我发现了两个有趣的问题:

我已尝试实施已回答的建议,但错误仍然出现。

有人知道如何修复它吗?

相关内容