是否可以在搜索插件 XML 中使用相对路径? (开放搜索)
Is it possible to have a relative path in a Search Plugin XML? (OpenSearch)
我有一个 Open Search XML 网络应用程序,看起来像这样:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>AppName</ShortName>
<Description>Search App</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="32" height="32" type="image/png">https://not.my.app.url/public/favicon.png</Image>
<Url type="text/html" method="get" template="https://not.my.app.url/$/search?q={searchTerms}"/>
</OpenSearchDescription>
一个问题是,如果我想在 URL 而不是 https://not.my.app.url
上托管应用程序,我将不得不手动编辑清单以匹配新的主机名或使用某种方式将正确的主机名放在那里的预处理器。有什么办法可以改用相对路径吗?我尝试简单地省略主机名和协议说明符,但随后 Firefox 拒绝将其安装为搜索提供程序(我没有测试任何其他浏览器)。
OpenSearch specification将URL模板语法定义为:
ttemplate = tscheme ":" thier-part [ "?" tquery ] [ "#" fragment ]
tscheme = *( scheme / tparameter )
thier-part = "//" tauthority ( tpath-abempty / tpath-absolute / tpath-rootless / path-empty )
tauthority = [ tuserinfo "@" ] thost [ ":" tport ]
tuserinfo = *( userinfo / tparameter )
thost = *( host / tparameter )
tport = *( port / tparameter )
tpath-abempty = *( "/" tsegment )
tsegment = *( segment / tparameter )
tpath-absolute = "/" [ tsegment-nz *( "/" tsegment ) ]
tsegment-nz = *( segment-nz / tparameter )
tpath-rootless = tsegment-nz *( "/" tsegment )
tparameter = "{" tqname [ tmodifier ] "}"
tqname = [ tprefix ":" ] tlname
tprefix = *pchar
tlname = *pchar
tmodifier = "?"
tquery = *( query / tparameter )
tfragement = *( fragement / tparameter )
如您所见,方案和主机是必需的。
换句话说,相对 URL 是不允许的。
您必须使用绝对 URL,例如 http://example.com/search?q={searchTerms}
.
我有一个 Open Search XML 网络应用程序,看起来像这样:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>AppName</ShortName>
<Description>Search App</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="32" height="32" type="image/png">https://not.my.app.url/public/favicon.png</Image>
<Url type="text/html" method="get" template="https://not.my.app.url/$/search?q={searchTerms}"/>
</OpenSearchDescription>
一个问题是,如果我想在 URL 而不是 https://not.my.app.url
上托管应用程序,我将不得不手动编辑清单以匹配新的主机名或使用某种方式将正确的主机名放在那里的预处理器。有什么办法可以改用相对路径吗?我尝试简单地省略主机名和协议说明符,但随后 Firefox 拒绝将其安装为搜索提供程序(我没有测试任何其他浏览器)。
OpenSearch specification将URL模板语法定义为:
ttemplate = tscheme ":" thier-part [ "?" tquery ] [ "#" fragment ]
tscheme = *( scheme / tparameter )
thier-part = "//" tauthority ( tpath-abempty / tpath-absolute / tpath-rootless / path-empty )
tauthority = [ tuserinfo "@" ] thost [ ":" tport ]
tuserinfo = *( userinfo / tparameter )
thost = *( host / tparameter )
tport = *( port / tparameter )
tpath-abempty = *( "/" tsegment )
tsegment = *( segment / tparameter )
tpath-absolute = "/" [ tsegment-nz *( "/" tsegment ) ]
tsegment-nz = *( segment-nz / tparameter )
tpath-rootless = tsegment-nz *( "/" tsegment )
tparameter = "{" tqname [ tmodifier ] "}"
tqname = [ tprefix ":" ] tlname
tprefix = *pchar
tlname = *pchar
tmodifier = "?"
tquery = *( query / tparameter )
tfragement = *( fragement / tparameter )
如您所见,方案和主机是必需的。
换句话说,相对 URL 是不允许的。
您必须使用绝对 URL,例如 http://example.com/search?q={searchTerms}
.