我们有一个Intranet网站来搜索客户详细信息。该网站正在尝试使用http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.1#Declaring_a_JSON-formatted_search_suggestion_URL中记录的建议扩展名实施OpenSearch。
在/index.html中:
<link rel="search" type="application/opensearchdescription+xml" title="XXX" href="/opensearch.xml" />
在/opensearch.xml中:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>XXX</ShortName>
<Description>XXX</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/x-icon">
https://XXX/favicon.ico
</Image>
<Url rel="results" type="text/html" method="get" template="https://XXX/search.php?q={searchTerms}"/>
<Url rel="suggestions" type="application/x-suggestions+json" method="get" template="https://XXX/opensearch-suggestions.php?q={searchTerms}"/>
</OpenSearchDescription>
然后opensearch-suggestions.php返回静态响应:
["a@b.c",["a@b.c"],["XXX"],["XXX.php?email=a@b.c"]]
我们可以成功使Safari将搜索发送到所需页面。但是,在输入建议时,建议来自DuckDuckGo,而不是我们的搜索引擎。
测试用例:
预期结果:
XXX是自动完成建议(请参见上面的opensearch-suggestions.php)
实际结果:
URL栏显示“ DuckDuckGo建议”和DDG的一些建议。
我们执行不正确吗?是否存在不兼容性会阻止我们实施此标准?
答案 0 :(得分:0)
之所以不起作用,是因为Safari不在OpenSearch建议请求中发送cookie。
此行为未在OpenSearch规范中定义,我也没有在Safari中看到任何文档。