鉴于我在下面这一页
http://www.webmail.com/pages/home.aspx
如何用JavaScript检索主机名(“http://www.webmail.com”)?
鉴于我在下面这一页
http://www.webmail.com/pages/home.aspx
如何用JavaScript检索主机名(“http://www.webmail.com”)?
当前回答
使用前牢记窗口和位置
1.在客户端渲染中使用窗口和位置(注意:不在ssr中使用)
window.location.host;
or
var host = window.location.protocol + "//" + window.location.host;
2.服务器端渲染
如果你使用nuext .js(vue)或next.js(react),请参考文档
对于nuxt js框架
req.headers.host
代码:
async asyncData ({ req, res }) {
if (process.server) {
return { host: req.headers.host }
}
路由器代码:
export function createRouter (ssrContext) {
console.log(ssrContext.req.headers.host)
return new Router({
middleware: 'route',
routes:checkRoute(ssrContext),
mode: 'history'
})
}
对于next.js框架
Home.getInitalProps = async(context) => {
const { req, query, res, asPath, pathname } = context;
if (req) {
let host = req.headers.host // will give you localhost:3000
}
}
对于node.js用户
var os = require("os");
var hostname = os.hostname();
or
request.headers.host
对于laravel用户
public function yourControllerFun(Request $request) {
$host = $request->getHttpHost();
dd($host);
}
or
直接在web.php中使用
Request::getHost();
注意:
您手动检查CSR和SSR应用程序 例子 ssr渲染
if(req.server){
host=req.host;
}
if(req.client){
host=window.location.host;
}
其他回答
要获取主机名:location.hostname
但你的例子也在寻找方案,也就是位置。在Chrome中,origin似乎可以做你想做的事情,但在Mozdev文档中却没有提及。你可以用
location.protocol + '//' + location.hostname
如果你也想要端口号(当它不是80时),那么:
location.protocol + '//' + location.host
我喜欢这个,取决于目的
window.location.href.split("/")[2] == "localhost:17000" //always domain + port
你可以在任何url字符串上应用它
var url = "http://localhost:17000/sub1/sub2/mypage.html?q=12";
url.split("/")[2] == "localhost:17000"
url.split("/")[url.split("/").length-1] == "mypage.html?q=12"
从url-string(相对路径)中删除协议,域和路径
var arr = url.split("/");
if (arr.length>3)
"/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
你可以尝试这样做:
1. Get the full URL:
window.location
2. Get the only protocol:
window.location.protocol
3. Get the host:
window.location.host
4. Get the host and protocol:
window.location.origin
5. Get pathname or directory without protocol and host:
var url = 'http://www.example.com/somepath/path2/path3/path4';
var pathname = new URL(url).pathname;
alert(pathname);
// will return the host name and port
var host = window.location.host;
或可能
var host = window.location.protocol + "//" + window.location.host;
或者如果你喜欢串联
var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.host);
// or as you probably should do
var host = location.protocol.concat("//").concat(window.location.host);
// the above is the same as origin, e.g. "https://stackoverflow.com"
var host = window.location.origin;
如果您有或期望自定义端口,请使用window.location.host而不是window.location.hostname
这应该可以工作:
window.location.hostname