如何在Safari中显示OpenSearch建议?

时间:2018-12-11 23:16:10

标签: html openssl autosuggest search-suggestion

我们有一个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,而不是我们的搜索引擎。

测试用例:

  1. 使用macOS + Safari
  2. Command-N(新窗口,焦点URL栏)
  3. 键入我们的Intranet URL(URL栏显示“热门搜索:(URL)”)
  4. 按TAB键(URL栏变为“搜索(URL)”)
  5. 输入搜索字词,例如aaa

预期结果:

XXX是自动完成建议(请参见上面的opensearch-suggestions.php)

实际结果:

URL栏显示“ DuckDuckGo建议”和DDG的一些建议。


我们执行不正确吗?是否存在不兼容性会阻止我们实施此标准?

1 个答案:

答案 0 :(得分:0)

之所以不起作用,是因为Safari不在OpenSearch建议请求中发送cookie。

此行为未在OpenSearch规范中定义,我也没有在Safari中看到任何文档。