我需要从给定的URL中提取完整的协议、域和端口。例如:

https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181

当前回答

Window.location.protocol + '//' + window.location.host

其他回答

首先获取当前地址

var url = window.location.href

然后解析这个字符串

var arr = url.split("/");

你的网址是:

var result = arr[0] + "//" + arr[2]

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');

出于某种原因,所有的答案都是多余的。这就是一切:

window.location.origin

更多细节可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/API/window.location#Properties

var getBasePath = function(url) {
    var r = ('' + url).match(/^(https?:)?\/\/[^/]+/i);
    return r ? r[0] : '';
};
var http = location.protocol;
var slashes = http.concat("//");
var host = slashes.concat(window.location.hostname);