最近有一个项目的配置文件中需要获取当前的服务器地址,然后拼接成后端的请求地址,在其他的环境中配置成 root: location.hostname 都是没有问题,但是代码换了一个环境后,后端的接口就一直请求失败,通过浏览器的 NetWork 查看请求的后端地址不是我们实际的地址,后来发现是这个配置文件的问题,把 location.hostname 换成 location.host 就行了。
问题总结:
在JavaScript 中大多数情况下,我们不会发现 location.host 与 location.hostname 的区别,因为大多数情况下,我们的网页默认用的是 80 端口。
MDN的文档说明如下:
- Location.host
- Is a DOMString containing the host, that is the hostname, a ':', and the port of the URL.
- Location.hostname
- Is a DOMString containing the domain of the URL.
也就是说,host 是 URL 中的 主机:端口, 而 hostname 仅是 URL 中的 主机。
举个例来说:
网址 https://www.zhuqiming.cn
- location.host = www.zhuqiming.cn
- location.hostname = www.zhuqiming.cn
网址 https://www.zhuqiming.cn:443
- location.host = www.zhuqiming.cn:443
- location.hostname = www.zhuqiming.cn
所以它们的区别是在于:
location.host 包含端口,比如是 127.0.0.1:81。如果端口是 80,那么就没有端口,就是 127.0.0.1
location.hostname 不包含端口,比如是 127.0.0.1
博主只是一名前端的小白,只是把自己用到的知识分享一下,要是有什么不对的地方,欢迎大家提出~~
继续阅读
评论