URL 中的分号和问号有什么区别

YQM*_*YQM 5 parameters url http

考虑这两个 URL:

www.g.com/flow;a=1
www.g.com/flow?a=1
Run Code Online (Sandbox Code Playgroud)

分号和问号有什么区别?

a=1两者的含义相同吗?

Wil*_*ung 5

分隔?URL 的查询部分,而;在本例中,被视为路径本身的参数。

大多数库不公开这一点。表面上,它是路由请求的一部分(因为路径是整个资源位置的一部分),而不是查询部分(影响查询的处理)。

我见过的唯一常见的情况是在 Java Servlet 容器中,它使用参数限定路径JSESSIONID。

您可以看到这在本例中是如何有意义的:

http://www.example.com/context;JSESSIONID=12345?query_param1=ABC
Run Code Online (Sandbox Code Playgroud)

从 Servlet 容器 POV 来看,JSESSIONID 在路由阶段将内部会话绑定到请求,但处理逻辑对此一无所知,只看到查询参数和路径的其余部分。

我实际上不知道路径参数是否在Servlet容器中公开,也许你得到了整个URL,但是内部Java URL类没有路径参数的概念,所以我不能说。