我在 Firefox 搜索栏中添加了自定义搜索引擎。当我进入那里,例如"我是谁?" 它会被传递到自定义搜索引擎" Who + am + It%253F" 而不是预期" Who + am + It%3F" 。结果是搜索引擎返回空结果集。
它适用于例如铬。
还尝试了其他一些OpenSearch搜索引擎,例如维基百科或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>
答案 0 :(得分:0)
问题的根源似乎是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。需要删除并重新添加搜索引擎