仅带有参数(以问号开头)的链接/ href 是不是有效?

Posted

技术标签:

【中文标题】仅带有参数(以问号开头)的链接/ href 是不是有效?【英文标题】:is link / href with just parameters (starting with question mark) valid?仅带有参数(以问号开头)的链接/ href 是否有效? 【发布时间】:2011-12-13 21:15:50 【问题描述】:

这个链接有效吗?

<a href="?lang=en">eng</a>

我知道浏览器会按预期处理它,我也知道 empty link would be ok - 但是只指定参数可以吗?

我很好奇,因为问号 ("?") 只是大多数 HTTP 服务器 (AFAIK) 的约定,尽管我承认它是一种流行的约定。

所以,回顾一下:

    所有浏览器都会正确解释这个吗?

    这是在 RFC 中吗?

    我会遇到一些麻烦吗?

更新:点击时的预期操作是重定向到同一页面,但使用不同的 GET 参数(上例中的“lang=en”)。

【问题讨论】:

查询不仅仅是一个约定,它是HTTP standard的一部分 @Quentin:谢谢,不知道! 我希望我可以将此参数lang=en 添加到当前 URL + 当前参数 【参考方案1】:

是的。 你可以在RFC 1808 - Relative Uniform Resource Locators找到它:

在具有明确定义的基本 URL 的对象内 基地:&lt;URL:http://a/b/c/d;p?q#f&gt; 相对 URL 将按如下方式解析:

5.1。普通例子

?y = &lt;URL:http://a/b/c/d;p?y&gt;

RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax 重申相同,并添加更多细节,包括语法:

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
             / path-absolute
             / path-noscheme
             / path-empty     #; zero characters

现在,并不是说所有浏览器都按照标准实现它,但看起来这应该是安全的。

【讨论】:

【参考方案2】:

是的 - 它会使用您传递的参数访问当前 url。

在您想确保不跨越当前页面/表单边界并继续点击相同的ActionMethod 或使用不同参数侦听的任何情况下使用它非常方便。

【讨论】:

以上是关于仅带有参数(以问号开头)的链接/ href 是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章

jdbc链接mysql插入数据后显示问号

Kentico 是不是允许带有问号的查询字符串?

使用两条路由 mvc 2 时 URL 参数中的问号

NamedParameterJdbcTemplate使用详解

href=url?page=1 问号后面的参数能不能不在地址栏显示

查找带有 beautifulsoup 的特定链接