(这花了我一段时间,所以我提供问题和答案认为它是值得的。)
DataImportHandler必须从中检索数据的URL通过HTTPS和其他auth
参数得到保护。 DataImportHandler
的配置如下所示:
<dataConfig>
<dataSource type="URLDataSource"
baseUrl="https://www.gutscheinpony.de/"
encoding="UTF-8"/>
<document>
<entity name="pony"
pk="id"
url="feeds.xml?auth=XXX"
processor="XPathEntityProcessor"
forEach="/data/offers/offer"
xsl="xslt/gutscheinpony.xsl">
<!-- fields omitted -->
</entity>
</document>
</dataConfig>
在常规SOLR 6安装上运行此操作将失败并使用403 Forbidden
代码,同时通过curl
对同一网址进行快速测试成功(仅显示有趣的输出):
curl https://www.gutscheinpony.de/feeds.xml?auth=XXX -Iv
> Host: www.gutscheinpony.de
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
是否可以在不编写自定义Java代码的情况下为DataImportHandler
连接设置用户代理?
答案 0 :(得分:0)
不同之处在于Java默认情况下不设置用户代理。 SOLR和DataImportHandler
也不会自动为HTTPS连接修复此问题。
可以使用System
属性http.agent
为Java进程设置用户代理值。只有当其他服务器关心它时,该值才有意义。
因此,当{SOLF}启动时,DataImportHandler
将正常运行:
bin/solr -f -Dhttp.agent="test/me"