location.host vs location.hostname and cross

Which one of these is the most effective vs checking if the user agent is accessing via the correct domain.

We would like to show a small js based 'top bar' style warning if they are accessing the domain using some sort of web proxy (as it tends to break the js).

We were thinking about using the following:

var r = /.*domain.com$/;
if (r.test(location.hostname)) {
    // showMessage ...
}

That would take care of any subdomains we ever use.

Which should we use host or hostname?

In Firefox 5 and Chrome 12:

console.log(location.host);
console.log(location.hostname);

.. shows the same for both.

Is that because the port isn't actually in the address bar?

W3Schools says host contains the port.

Should location.host/hostname be validated or can we be pretty certain in IE6+ and all the others it will exist?


交互式链接解剖学

As a little memo: the interactive link anatomy

--

In short (assuming a location of http://example.org:8888/foo/bar#bang ):

  • hostname gives you example.org
  • host gives you example.org:8888

  • host just includes the port number if there is one specified. If there is no port number specifically in the URL, then it returns the same as hostname. You pick whether you care to match the port number or not. See https://developer.mozilla.org/en/window.location for more info.

    I would assume you want hostname to just get the site name.


    If you are insisting to use the window.location.origin You can put this in top of your code before reading the origin

    if (!window.location.origin) {
      window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
    }
    

    Solution

    PS: For the record, it was actually asked for the first time. They could probably edited it already. :)

    链接地址: http://www.djcxy.com/p/70282.html

    上一篇: Chrome Javascript调试器暂停时不会重新加载页面

    下一篇: location.host与location.hostname和cross