OpenSearch描述文件是声明网站搜索服务的UTF-8编码XML文件,根元素为<OpenSearchDescription>,必需包含ShortName、Description、Url(含{searchTerms}占位符)等字段,并通过<link rel="search" type="application/opensearchdescription+xml">在HTML中声明以供浏览器发现。

什么是 OpenSearch 描述文件
OpenSearch 是一种简单 XML 格式,用于描述一个搜索服务(比如网站站内搜索),让浏览器或客户端能自动发现并集成该搜索功能。link 标签就是浏览器发现它的入口。它本身不提供搜索能力,只告诉浏览器“这个网站支持搜索,描述在哪儿”。
link rel="search" 的写法和必要属性
必须同时满足三个条件,浏览器才可能识别为可安装的搜索插件:
-
rel值必须是"search"(不能是"searches"或其他变体) -
type必须是"application/opensearchdescription+xml" -
href必须指向一个真实可访问、返回Content-Type: application/opensearchdescription+xml的 .xml 文件
典型写法:
<link rel="search" type="application/opensearchdescription+xml" title="我的站点搜索" href="/opensearch.xml">
注意:title 属性值会显示在浏览器地址栏下拉菜单或搜索框中,应简洁唯一;多个 link 标签时,浏览器通常只取第一个。
立即学习“前端免费学习笔记(深入)”;
opensearch.xml 文件内容要点
这个文件不是随便写的 XML,必须包含几个关键字段,否则 Chrome/Firefox 会静默忽略:
-
<ShortName>:最多 16 字符,出现在浏览器 UI 中(如MySite) -
<Description>:简要说明(如Search MySite articles) -
<Url>必须有type="text/html"且含template属性,模板里用{searchTerms}占位(不是${q}或其他) - 推荐加上
<InputEncoding>UTF-8</InputEncoding>,避免中文搜索乱码
最小可用示例:
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>MySite</ShortName>
<Description>Search MySite articles</Description>
<InputEncoding>UTF-8</InputEncoding>
<Url type="text/html" template="https://example.com/search?q={searchTerms}" />
</OpenSearchDescription>
常见失败原因和验证方式
即使 link 写对了,也常因以下问题导致浏览器不识别:
- 服务器返回的
Content-Type不是application/opensearchdescription+xml(Nginx/Apache 需显式配置.xml的 MIME 类型) -
href路径 404 或返回 302 重定向(Firefox 尤其敏感,要求直接响应) -
template中用了{searchTerms}以外的占位符(例如{q}) - XML 文件有语法错误(如未闭合标签、编码声明与实际不符)
验证方法:直接在浏览器访问 href 地址(如 /opensearch.xml),检查是否能正常显示 XML 内容,再看响应头里的 Content-Type 是否正确。Chrome 开发者工具 Network 面板中查看该请求的响应头最可靠。
实际部署时,opensearch.xml 的路径和内容一致性比语法炫技重要得多;浏览器对格式容忍度低,但对路径和响应头极其较真。



















