无法使用 Blazegraph (localhost:9999, Jetty) 设置 CORS 以便从另一个端口(loc



我一直在远程Ubuntu服务器上使用Wikibase,Wikidata Query Service(GitHub)和Wikidata Query Service GUI运行MediaWiki。我正在通过隧道连接到该服务器,以便访问本地计算机上的内容。

GUI(在服务器上以 localhost:8080 运行,在本地计算机上以 localhost:600 运行)正在尝试联系查询服务,特别是通过 Jetty 服务器运行的 Blazegraph(服务器和本地计算机上的 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运行,而又运行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页面中添加了更多信息。

最新更新