使用没有值的 GET 参数(在 URL 中)是一种不好的做法吗?

2022-01-04 00:00:00 url get php

我和我的老板就使用没有价值的 GET 参数的 URL 有一点争论.例如

I'm in a little argument with my boss about URLs using GET parameters without value. E.g.

http://www.example.com/?logout

我经常在网络上看到这种链接,当然,这并不意味着这是一件好事.他担心这不是标准的,可能会导致意想不到的错误,所以他宁愿让我使用类似的东西:

I see this kind of link fairly often on the web, but of course, this doesn't mean it's a good thing. He fears that this is not standard and could lead to unexpected errors, so he'd rather like me to use something like:

http://www.example.com/?logout=yes

根据我的经验,我从未在使用空参数时遇到任何问题,而且它们有时对我更有意义(例如在这种情况下,?logout=no 没有任何意义,所以注销"的值是无关紧要的,我只会测试参数服务器端的存在,而不是它的值).(它看起来也更干净.)

In my experience, I've never encountered any problem using empty parameters, and they sometimes make more sense to me (like in this case, where ?logout=no wouldn't make any sense, so the value of "logout" is irrelevant and I would only test for the presence of the parameter server-side, not for its value). (It also looks cleaner.)

但是我无法确认这种用法实际上是有效的,因此真的不会引起任何问题.

However I can't find confirmation that this kind of usage is actually valid and therefore really can't cause any problem ever.

你有这方面的链接吗?

推荐答案

RFC 2396, "Uniform Resource Identifiers (URI): Generic Syntax", §3.4, "Query Component" 是关于查询字符串的权威信息来源,并声明:

RFC 2396, "Uniform Resource Identifiers (URI): Generic Syntax", §3.4, "Query Component" is the authoritative source of information on the query string, and states:

查询组件是一串要被解释的信息资源.

The query component is a string of information to be interpreted by the resource.

[...]

在查询组件中,字符;"、/"、?"、:"、@"、&"、="、+"、,"和$"是保留的.

Within a query component, the characters ";", "/", "?", ":", "@", "&", "=", "+", ",", and "$" are reserved.

RFC 2616,超文本传输​​协议 -- HTTP/1.1",§3.2.2,http URL",没有重新定义.

RFC 2616, "Hypertext Transfer Protocol -- HTTP/1.1", §3.2.2, "http URL", does not redefine this.

简而言之,您提供的查询字符串(注销")是完全有效的.

In short, the query string you give ("logout") is perfectly valid.

相关文章