【发布时间】:2016-07-09 13:06:21
【问题描述】:
我在 Apache Tomcat 9 上运行 solr 4.3。它被部署为 web 应用程序,并被 crm 产品用于提供索引。
我们需要对索引进行搜索,因此我试图质疑 solr,并且正在使用以下查询:
http://localhost:8888/solr-intranet-int/intranet_users/suggest?q=(surname_t:*on*)
在我的邮递员客户端中运行良好,因此可以在集成之前构建一个快速测试页面。测试页面是托管在其自己的 IIS 网站上的纯 html,因此位于与 solr 实例不同的域中。
测试页面中的jquery如下所示:
$("#bob").autocomplete({
source: function(request, response)
{
var input = $("#bob").val();
$.ajax({
type: "GET",
dataType: "application/xml",
url:"http://localhost:8888/solr-intranet-int/intranet_users/suggest?q=surname_t:*" + input + "*",
success: function(data)
{
$('input.suggest-user').removeClass('ui-autocomplete-loading');
response($.map(data, function(item) {
// todo
}));
},
error: (function(data) {
$("#bob").removeClass('ui-autocomplete-loading');
})
});
},
minLength: 3,
open: function() {},
close: function() {},
focus: function(event,ui) {},
select: function(event, ui) {}
});
});
我得到了预期的 CORS 错误,因此开始尝试在 TOMCAT 中使用以下内容修复这些错误
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://localhost:5757</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Authorization</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials, Authorization</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我不确定如何继续。我能找到的所有文档都与 solr 5 中的 Jetty 相关,因为它们已经离开了 tomcat,但是必须离开才能获取接受标头,目前我在浏览器中收到以下错误:
XMLHttpRequest 无法加载 http://localhost:8888/solr-intranet-int/intranet_users/suggest?q=surname_t:琼斯。 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:5757” 访问。
【问题讨论】: