基于Scheme的规范化
- 在URL的授权组件后添加尾随斜杠“/”
- 删除默认端口号,例如http方案的80
- 截断URL的片段
基于协议的规范化
- 仅在访问资源的结果等效时才适用
- 例如,origin服务器将example.com/data重定向到example.com/data/
基于Scheme的规范化
基于协议的规范化
正如其他人提到的那样,java.net.URL和/或java.net.URI是一些明显的起点。
这里还有其他选项:
Galimatias(西班牙语意为“胡言乱语”)似乎是一个偏执而相对受欢迎的Java URL规范化库。源代码可以在github.com/smola/galimatias找到。
galimatias起初是因为对java.net.URL和java.net.URI感到失望而开始的。它们两个都适用于基本用例,但对于其他用例来说严重破坏
github.com/sentric/url-normalization库提供了另一种(我认为不寻常的)方法,其中它颠倒了域名部分;例如,“com.stackoverflow”而不是“stackoverflow.com”。
您可以在Github上找到其他变体,有时会用Python、Ruby和PHP等语言实现。
URI uri = URI.create("http://www.example.com:8040/folder/exist?name=sky#head");
String scheme = uri.getScheme();
String authority = uri.getAuthority();
// ...
https://docs.oracle.com/javase/1.5.0/docs/api/java/net/URI.html