java - 标准 URL 规范化 - Java

标签 java url normalization

请问有没有标准URL规范化的Java包或库?

URL 表示的 5 个组成部分

http://www[dot]example[dot]com:8040/folder/exist?name=sky#head

  1. 方案:http
  2. 权限:www.example.com:8040
  3. 路径:/folder/exist
  4. 查询:?name=sky
  5. 片段:#head

标准 URL 规范化的 3 种类型

基于语​​法的规范化

  • 大小写规范化——将方案和权限组件中的所有字母转换为小写
  • 百分比编码规范化——解码任何对应于未保留字符的百分比编码八位位组,例如连字符的 %2D 和下划线的 %5
  • 路径段归一化——从路径组件中删除点段,例如“.”和“..”

基于方案的规范化

  • 在 URL 的权限部分后添加尾随的“/”
  • 去掉默认的端口号,比如http scheme的80
  • 截断 URL 片段

基于协议(protocol)的规范化

  • 仅当访问资源的结果相同时才适用
  • 例如example.com/data被源站定向到example.com/data/

最佳答案

正如其他人所提到的,java.net.URL和/或 java.net.URI是一些明显的起点。

这里有一些其他选项:

  1. Galimatias (西类牙语为“胡言乱语”)似乎是一个固执己见且相对流行的 Java URL 规范化库。源代码可以在 github.com/smola/galimatias 找到。 .

    galimatias started out of frustration with java.net.URL and java.net.URI. Both of them are good for basic use cases, but severely broken for others

  2. github.com/sentric/url-normalization库提供了另一种(在我看来不寻常的)方法,它反转域部分;例如“com.stackoverflow”而不是“stackoverflow.com”。

您可以在 Github 上找到其他变体,有时使用 Python、Ruby 和 PHP 等语言实现。

关于java - 标准 URL 规范化 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365271/

相关文章:

java - Android Retrofit 从服务器下载/读取文本文件

java - 如何用Java以编程方式访问网站?

PHP : To serialize or not

python - Matplotlib (Python) 标准化数据

java - J2ME 应用程序显示???编译后的字符

java - spring中Bean实例化与静态工厂的查询

java - 在 MySQL 中维护来自大型连续数据源的预处理数据

javascript - 我如何在脚本中分配 php 定义常量值

php - 从字符串中获取 URL

normalization - 上下文无关语法转换