我需要从给定的URL中提取完整的协议、域和端口。例如:
https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
我需要从给定的URL中提取完整的协议、域和端口。例如:
https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
当前回答
protocol属性设置或返回当前URL的协议,包括冒号(:)。
这意味着如果你只想获得HTTP/HTTPS部分,你可以这样做:
var protocol = window.location.protocol.replace(/:/g,'')
对于域名,您可以使用:
var domain = window.location.hostname;
对于您可以使用的端口:
var port = window.location.port;
请记住,如果端口在URL中不可见,则端口将是空字符串。例如:
http://example.com/将为端口返回“” http://example.com:80/将返回80端口
如果在没有端口使用时需要显示80/443
var port = window.location.port || (protocol === 'https' ? '443' : '80');
其他回答
var http = location.protocol;
var slashes = http.concat("//");
var host = slashes.concat(window.location.hostname);
Window.location.origin就足以得到相同的。
实际上,window.location.origin在遵循标准的浏览器中工作得很好,但你猜怎么着。IE没有遵循标准。
正因为如此,我在IE、FireFox和Chrome浏览器中使用了这个方法:
var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
但为了将来可能引起冲突的增强,我在“location”对象之前指定了“window”引用。
var full = window.location.protocol+'//'+window.location.hostname+(window.location.port ? ':'+window.location.port: '');
使用ES6模板文字:
Const url = ' ${location.protocol}//${location.hostname}${location.port?':'+location.port: "} '; . getelementbyid(“结果”)。innerText = url; < div id = "结果" > < / div >
你可以简化为:
Const url = ' ${location.protocol}//${location.host} '; . getelementbyid(“结果”)。innerText = url; < div id = "结果" > < / div >
出于某种原因,所有的答案都是多余的。这就是一切:
window.location.origin
更多细节可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/API/window.location#Properties