H和h每天输入的在意过吗

H和h      你在意过每天输入的网址是否区分大小写么?

3 个月前

通常在浏览器地址栏输入的网址我们叫做URL(统一资源定位符:Universal Resource Locators)。先来看一个简单的URL:

http://www.example.com/here/is/path/file.html

这个URL可以简单的描述为:使用HTTP协议去http://www.example.com所在的机器上读取文件file.html这个文件。当然这是简单的去理解,更详细的解析可以看这里。从这个描述中可以看到,一个URL会被分成三部分,形如:[协议]://[域名]/[路径]

  • 协议:最常见的就是HTTP跟HTTPS,除了这个还有FTP文件传输协议等,这里是不区分大小写的
  • 域名:域名(Domain Name)是需要通过域名系统(DNS)成功解析才能够正常访问到对应的IP地址,域名的命名规则之一就是:在域名中不区分大小写
  • 路径:路径部分是否区分大小写,则要看该网址对应的后台是如何实现的

只有路径部分才是会区分大小写。每个网站都有后台的服务器,如果服务器只是单纯的采用路径映射到机器的文件系统中,那不同的操作系统平台是会有不同的区别的:

  • Linux:常见的是采用第三/四代扩展文件系统(ext3/4),在该文件系统下是需要区分大小写的
  • Mac OS X: 使用的HFS / HFS + / APFS(2016年发布的macOS Sierra开始)文件系统是不区分大小写
  • Windows:微软公司开发的NTFS也是不区分大小写的

对于我们最经常接触到应用服务器来说,访问一个路径并不是指向文件系统中的某一个文件,而是作为一个字符串传输给应用服务器进行解析处理。

我这里用了Koa来做一个简单的测试,在URL的路径中输入大小写会出现什么情况。

const Koa = require('koa')
const app = new Koa()
const router = require('koa-router')()

router
  .get('/', (ctx, next) => { 
    ctx.body = `root path: ${ctx.req.url}`
  })
  .get('/lowercase', (ctx, next) => { 
    ctx.body = `lowercase path: ${ctx.req.url}`
  })
  .get('/UPPERCASE', (ctx, next) => {
    ctx.body = `uppercase path: ${ctx.req.url}`
  })

app.use(router.routes())
app.listen(3000)
  1. http://localhost:3000/ -> root path: /
  2. http://localhost:3000/lowercase -> lowercase path: /lowercase
  3. http://localhost:3000/LOWERCASE -> lowercase path: /LOWERCASE
  4. http://localhost:3000/UPPERCASE -> uppercase path: /UPPERCASE
  5. http://localhost:3000/uppercase -> uppercase path: /uppercase
  6. http://localhost:3000/UpPerCase -> uppercase path: /UpPerCase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值