我一直在运行MediaWiki with Wikibase ,Wikidata Query Service ( GitHub ),以及 Wikidata Query Service GUI在远程 Ubuntu 服务器上。我正在通过隧道进入该服务器,以便访问本地计算机上的内容。
GUI(在服务器上运行于 localhost:8080,在本地计算机上运行于 localhost:600)正在尝试联系查询服务,特别是 Blazegraph,它通过 Jetty 服务器运行(服务器和本地计算机上的 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 中添加了更多信息。页。
关于cors - 无法使用 Blazegraph (localhost :9999, Jetty) 设置 CORS 以从另一个端口 (localhost :600, http-server) 进行访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72244418/