2

(这花了我一段时间,所以我提供了问题和答案,认为这是值得的。)

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成功对同一 URL 进行快速测试(仅显示有趣的输出):

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

DataImportHandler是否可以在不编写自定义 Java 代码的情况下为连接设置用户代理?

4

1 回答 1

0

不同的是Java默认不设置User Agent。SOLR 和 HTTPS 连接都不会DataImportHandler自动修复此问题。

可以使用System属性为 Java 进程设置用户代理值http.agent。该值仅在其他服务器关心它时才重要。

因此,DataImportHandler当 SOLR 像这样启动时,它将运行良好:

bin/solr -f -Dhttp.agent="test/me"
于 2016-10-14T12:00:18.720 回答