我使用的是安装了 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 和移动设备)。
通过调查这一事件,我发现了两个有趣的问题:
我已尝试实施已回答的建议,但错误仍然出现。
有人知道如何修复它吗?