我试图在Django上添加opensearch,我既不能让Firefox获取正确的图标,也不能查询和显示建议。我也试过Chrome,我不认为我可以添加localhost作为搜索引擎。
这是我的opensearch.xml文件,Firefox正确读取,因为我可以将其添加到我的搜索引擎中。请注意,它目前显示localhost URL以进行调试。
<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>My website</ShortName>
<Description>My description</Description>
<Image width="16" height="16" type="image/x-icon">http://localhost:8000{{ STATIC_URL }}ico/favicon.ico</Image>
<Url type="text/html" method="get" template="http://localhost:8000/articles/?q={searchTerms}" />
<Url type="application/x-suggestions+json" method="get" template="http://localhost:8000/api/v1/articles/?q={searchTerms}"/>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>
当我在Firefox中将我的网站添加为搜索引擎时,以下是发出的请求:
[29 / Apr / 2014 18:18:19]&#34; GET /favicon.ico/static/ico/favicon.ico/ HTTP / 1.1&#34; 200 49266
[29 / Apr / 2014 18:18:21]&#34; GET /opensearch.xml HTTP / 1.1&#34; 200 335
[29 / Apr / 2014 18:18:21]&#34; GET /favicon.ico/static/ico/favicon.ico/ HTTP / 1.1&#34; 200 49267
如果图片设置为/favicon.ico/static/ico/favicon.ico/
,Firefox会尝试提取/static/ico/favicon.ico/
的原因是什么?我知道/static/ico/favicon.ico/
是有效的,因为它是我们在网站上使用的那个,它运作良好(本地和现场)。
opensearch接受的JSON格式是什么?我找到了RSS和ATOM格式,但没有找到JSON格式。
感谢您的帮助。
答案 0 :(得分:0)
问题是我的APPEND SLASH
设置有效,我没有为favicon定义网址。对于某些的原因,Firefox甚至在向服务器请求任何内容之前都会获取到/favicon.ico/static/ico/favicon.ico。
如果您启用了APPEND SLASH,那么for favicon的解决方案是将以下内容添加到您的主url.py
:
url(r'^favicon\.ico/$', RedirectView.as_view(url=settings.STATIC_URL + 'ico/favicon.ico'), name='favicon'),
ico
末尾的斜线非常非常重要。没有它,浏览器将被重定向到主页面。
链接到文档:http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions
["Search term entered by user", ["Suggestion 1", "Suggestion 2", ... ]]