Зачем "?" введенный в строку поиска Firefox кодируется как "%253F"
У меня есть пользовательская поисковая система, добавленная в панель поиска Firefox. Когда я вхожу туда, например "Кто я?" он передается в систему пользовательского поиска как "Кто + я + Это%253F", а не как "Кто + я + Это% 3F". Результатом является то, что поисковая система возвращает пустой набор результатов.
Он отлично работает, например, на Chrome.
Также пробовал некоторые другие поисковые системы OpenSearch, например, Wikipedia или DuckDuckGo в том же Firefox, которые прекрасно работают.
У вас есть идеи, что может быть источником проблемы?
Похоже, searchTerms кодируется дважды или что-то в этом роде.
Здесь используется XML
<?xml version="1.0"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>ShortName</ShortName>
<LongName>LongName</LongName>
<Description>Description</Description>
<Tags>discussions friends articles</Tags>
<Contact>admin@domain.com</Contact>
<Url type="text/html" method="get" template="URL?param=value&query={searchTerms}"/>
<Image height="16" width="16" type="image/x-icon">URL/favicon.ico</Image>
<Image height="64" width="64" type="image/png">URL/nikoscope64.png</Image>
<Query role="example" searchTerms="st" />
<AdultContent>false</AdultContent>
<Language>en-us</Language>
<InputEncoding>UTF-8</InputEncoding>
<OutputEncoding>UTF-8</OutputEncoding>
</OpenSearchDescription>
1 ответ
По-видимому, источником проблемы является Url.template, который указывал на страницу результатов по протоколу HTTP, даже если сервер работал по протоколу HTTPS.
Изменение этой части:
<Url type="text/html" method="get" template="http://SOME_DOMAIN?param=value&query={searchTerms}"/>
в
<Url type="text/html" method="get" template="https://SOME_DOMAIN?param=value&query={searchTerms}"/>
решил проблему. Обратите внимание, что очистки кеша браузера недостаточно для получения новой версии OpenSearch XML. Нужно удалить и заново добавить поисковик