Как показать предложения OpenSearch в Safari? - PullRequest
0 голосов
/ 12 декабря 2018

У нас есть интранет-сайт для поиска информации о клиентах.Этот веб-сайт пытается внедрить OpenSearch с расширением предложений, как описано в http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.1#Declaring_a_JSON-formatted_search_suggestion_URL.

In /index.html:

<link rel="search" type="application/opensearchdescription+xml" title="XXX" href="/opensearch.xml" />

In /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-Sugges.php возвращает статический ответ:

["a@b.c",["a@b.c"],["XXX"],["XXX.php?email=a@b.c"]]

Мы можем успешно заставить Safari отправить запрос на нужную страницу.Тем не менее, при наборе подсказки приходят от DuckDuckGo, а не от нашей поисковой системы.

Контрольный пример:

  1. Использование macOS + Safari
  2. Command-N (новое окно,фокусируется на панели URL)
  3. Введите URL-адрес нашей интрасети (в строке URL-адреса отображается "Самое популярное: (URL-адрес)")
  4. Нажмите TAB (строка URL-адреса изменяется на "Поиск (URL-адрес)")
  5. Введите поисковый запрос, например, aaa

Ожидаемый результат:

XXX - это предложение автозаполнения (см. Opensearch-Sugges.php выше)

Фактический результат:

В строке URL-адреса отображаются «Предложения DuckDuckGo» и некоторые предложения DDG.


Мы неправильно это реализовали?Есть ли несовместимость, которая помешает нам реализовать этот стандарт?

1 Ответ

0 голосов
/ 12 декабря 2018

Причина, по которой это не сработало, заключалась в том, что Safari не отправляет файлы cookie в запросе предложений OpenSearch.

Это поведение не определено в спецификации OpenSearch, и я не вижу никакой документации в Safari..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...