为什么"?"在Firefox搜索栏中输入的编码为"%253F"

时间:2016-05-18 09:42:30

标签: firefox encoding opensearch

我在 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&amp;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 个答案:

答案 0 :(得分:0)

问题的根源似乎是Url.template指向使用 HTTP 协议的结果页面,即使服务器在 HTTPS 协议上运行。

更改此部分:

<Url type="text/html" method="get" template="http://SOME_DOMAIN?param=value&amp;query={searchTerms}"/>

<Url type="text/html" method="get" template="https://SOME_DOMAIN?param=value&amp;query={searchTerms}"/>

解决了这个问题。 请注意,清空浏览器缓存并不足以获得新版本的OpenSearch XML。需要删除并重新添加搜索引擎