无法使用 Blazegraph(localhost:9999,Jetty)设置 CORS 以从另一个端口(localhost:600,http-server)访问

Cannot Set CORS with Blazegraph (localhost:9999, Jetty) for Access from Another Port (localhost:600, http-server)

我一直在远程 Ubuntu 服务器上 运行 宁 MediaWiki with Wikibase, the Wikidata Query Service (GitHub), and the Wikidata Query Service GUI。我正在通过隧道进入该服务器以访问我本地计算机上的内容。

GUI(运行在服务器上 localhost:8080 上,在本地计算机上 localhost:600 上)正在尝试联系查询服务,特别是 Blazegraph,这是通过 Jetty 服务器 运行ning(服务器和本地计算机上的 localhost:9999)。

一切都在单独的组件方面工作(成功安装,没有错误),如果在 Blazegraph UI 中输入 SPARQL 查询或将其复制粘贴到浏览器中,正确的 RDF 输出是生产的。但是,如果查询是来自维基数据查询服务 GUI 的 运行,它会生成 net::ERR_FAILED 200 和:

Access to XMLHttpRequest at 'http://localhost:9999/bigdata/sparql' from origin 'http://localhost:600' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

维基数据查询服务 GUI 是 运行 使用 npm start,后者又是 运行s http-server --cors='*'localhost:9999 的 Blazegraph 是 运行 使用:

sudo BLAZEGRAPH_OPTS="-DwikibaseConceptUri=http://localhost:400" bash /var/lib/mediawiki/extensions/wikidata-query-rdf/dist/target/service-0.3.111-SNAPSHOT/runBlazegraph.sh

我不确定如何允许维基数据查询服务 GUI 访问维基数据查询服务,因此非常感谢您的帮助!

更新 1:说这是 Jetty 9 可能会有帮助?

终于想通了,在/etc/apache2/sites-enabled/000-default.conf里面加了一个代理,如下:

<VirtualHost *:9000>
    Header add Access-Control-Allow-Origin "*"

    ProxyPreserveHost On

    ProxyPass / http://127.0.0.1:9999/
    ProxyPassReverse / http://127.0.0.1:9999/
</VirtualHost>

然后监听来自 localhost:8080->localhost:9000 的调用,并将调用重定向到 localhost:9999。我还在相关 Phabricator 页面中添加了更多信息。