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

我一直在运行 https://www.mediawiki.org/wiki/Wikibase/Installationhttps://www.mediawiki.org/wiki/Wikidata_Query_Service/Implementation/Standalone (https://github.com/wikimedia/wikidata-query-rdf) 和 https://github.com/wikimedia/wikidata-query-gui。我正在通过隧道进入该服务器以访问本地计算机上的内容。

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

一切都根据单独的组件进行(成功安装,没有错误),如果在 Blazegraph UI 中输入 SPARQL 查询或将其复制粘贴到浏览器中,则会生成正确的 RDF 输出。然而,如果查询是从 Wikidata 查询服务 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.

Wikidata 查询服务 GUI 使用 npm start 运行,而后者又运行 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

我不确定如何允许 Wikidata 查询服务 GUI 访问 Wikidata 查询服务,因此非常感谢任何帮助!

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

回答1

我终于想通了,通过在/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。我还在相关的 https://phabricator.wikimedia.org/T308180 页面中添加了更多信息。

相似文章

随机推荐

最新文章