programing

Javascript를 사용하여 현재 도메인 이름 가져오기(경로 등이 아님)

copyandpastes 2023. 1. 22. 22:50
반응형

Javascript를 사용하여 현재 도메인 이름 가져오기(경로 등이 아님)

같은 사이트의 도메인 네임 2개를 구입할 예정입니다.어떤 도메인을 사용하느냐에 따라 조금씩 다른 데이터를 페이지에 제공할 예정입니다.페이지를 로드하고 있는 실제 도메인 이름을 검색하여 내용을 변경할 수 있는 방법이 있습니까?

이런 것들을 찾아봤는데 대부분 제 뜻대로 되지 않아요.

예를 들어, 을 사용하는 경우

document.write(document.location)

JSFiddle에서는 반환됩니다.

http://fiddle.jshell.net/_display/

즉, 실제 경로든 뭐든 간에 말입니다.

그럼 어떻게 해?

window.location.hostname

location오브젝트에는 실제로 URL의 다른 부분을 참조하는 다수의 속성이 있습니다.

다음과 같은 URL 경로가 있다고 가정합니다.

http://localhost:4200/landing?query=1#2

따라서 다음과 같이 위치 값을 사용할 수 있습니다.

window.location.hash: "#2"
​
window.location.host: "localhost:4200"
​
window.location.hostname: "localhost"
​
window.location.href: "http://localhost:4200/landing?query=1#2"
​
window.location.origin: "http://localhost:4200"
​
window.location.pathname: "/landing"
​
window.location.port: "4200"
​
window.location.protocol: "http:"

window.location.search: "?query=1"

이것으로, 이하에 대해 결론을 내릴 수 있습니다.

window.location.hostname

호스트명에 관심이 없는 경우(예:www.beta.example.com도메인 이름(예:example.com)는, 유효한 호스트명에 대해서 기능합니다.

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
function getDomain(url, subdomain) {
    subdomain = subdomain || false;

    url = url.replace(/(https?:\/\/)?(www.)?/i, '');

    if (!subdomain) {
        url = url.split('.');

        url = url.slice(url.length - 2).join('.');
    }

    if (url.indexOf('/') !== -1) {
        return url.split('/')[0];
    }

    return url;
}

  • getDomain('http://www.example.com'); // example.com
  • getDomain('www.example.com'); // example.com
  • getDomain('http://blog.example.com', true); // blog.example.com
  • getDomain(location.href); // ..

이전 버전은 전체 도메인(하위 도메인 포함)을 가져오는 중이었습니다.이제 기본 설정에 따라 올바른 도메인을 결정합니다.따라서 두 번째 인수가 true로 제공되면 하위 도메인이 포함되며, 그렇지 않으면 '주 도메인'만 반환됩니다.

완전한 도메인 오리진을 원하는 경우 다음을 사용할 수 있습니다.

document.location.origin

도메인만 가져오려면 다음과 같이 하십시오.

document.location.hostname

다른 옵션이 있습니다.다음의 속성을 참조해 주세요.

document.location

Javascript의 위치 객체에서 쉽게 얻을 수 있습니다.

예를 들어 이 페이지의 URL은 다음과 같습니다.

http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc

그런 다음 위치 객체의 다음 속성을 사용하여 정확한 도메인을 가져올 수 있습니다.

location.host = "www.stackoverflow.com"
location.protocol= "http:"

다음과 같은 방법으로 전체 도메인을 만들 수 있습니다.

location.protocol + "//" + location.host

이 예에서 반환되는 것은http://www.stackoverflow.com

여기에 더해 완전한 URL과 위치 객체의 다른 속성을 가진 경로도 얻을 수 있습니다.

location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"    
location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"

도메인 이름에만 관심이 있고 서브도메인을 무시하려면 다음에서 해석해야 합니다.host그리고.hostname.

다음 코드가 이를 수행합니다.

var firstDot = window.location.hostname.indexOf('.');
var tld = ".net";
var isSubdomain = firstDot < window.location.hostname.indexOf(tld);
var domain;

if (isSubdomain) {
    domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1);
}
else {
  domain = window.location.hostname;
}

http://jsfiddle.net/5U366/4/

window.location.hostname시작이 좋다.단, 삭제해야 할 서브도메인이 포함되어 있습니다.예를 들어 호스트명이www.example.com 」 「 」 「 」 만이 경우가 .example.comsyslog.syslog.

를 들어, 「코너 케이스」나 「코너 케이스」가 있습니다.bbc.co.uk잘 regex가 맞다.

let hostname = window.location.hostname;
// remove any subdomains, e.g. www.example.com -> example.com
let domain = hostname.match(/^(?:.*?\.)?([a-zA-Z0-9\-_]{3,}\.(?:\w{2,8}|\w{2,4}\.\w{2,4}))$/)[1];
console.log("domain: ", domain);

이 질문은 호스트 이름이 아닌 도메인 이름을 묻기 때문에 정답은 다음과 같습니다.

window.location.hostname.split('.').slice(-2).join('.')

이것은, www.example.com 와 같은 호스트명에도 유효합니다.

사용하다

document.write(document.location.hostname)​

window.location많은 재산을 가지고 있습니다.자세한 것은, 여기를 봐 주세요.

JavaScript에서 도메인 이름을 가져오려면 다음 코드를 사용하십시오.

var domain_name = document.location.hostname;
alert(domain_name);

웹 페이지 URL 경로에 액세스하기 위해 웹 페이지 URL 경로를 사용해야 하는 경우 다음 예를 사용합니다.

var url = document.URL;
alert(url);

이렇게 간단해야 한다고 생각합니다.

url.split("/")[2]

이 기능은 어떻습니까?

window.location.hostname.match(/\w*\.\w*$/gi)[0]

이것은 서브도메인이든 메인도메인이든 관계없이 도메인 이름만 일치합니다.

내 경우 window.location.location이 가장 잘 일치합니다.

위의 몇 가지 답변을 조합하면 쿠키 파괴에는 다음 사항이 매우 효과적입니다.

  /**
   * Utility method to obtain the domain URI:
   */
  fetchDomainURI() {
    if (window.location.port.length > 0) {
      return window.location.hostname;
    }
    return `.${window.location.hostname.match(/\w*\.\w*$/gi)[0]}`;
  }

IP 등 「IP」의 「0.0.0:8000」등의 복잡한 기능합니다.app.staging.example.com(Return).example.com=>쿠키입니다.

JavaScript는 처음이지만 document.domain을 사용하면 안 되나요?

예:

<p id="ourdomain"></p>

<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>

출력:

domain.com

또는

www.domain.com

웹 사이트에서 사용하는 항목에 따라 다릅니다.

이라도, 도메인이 됩니다(를 들면, 「Domain」, 「Domain」등).blog.example.com, " "location.hostname나중에 참조할 수 있도록 도메인만 추출하는 원라이너를 권장합니다(예: https://blog.example.com/index.html->example.com마이클로 말이야

location.hostname.split('.').filter(( _, i) => i < 2).join('.')

주의! TLD가 두 부분으로 구성되면 깨질 수 있습니다(예: .co.uk2월 3일입니다.

https://publicsuffix.org/list/

(https://github.com/publicsuffix/list/blob/master/public_suffix_list.dat)

는, 서픽스를 사용하지 않고 모든 도메인을 올바르게 해석하기 위해서 필요합니다.상기의 회답에서는, 점으로 조작하면, 완전하게는 올바르지 않습니다.이것을 실현하려면 , 퍼블릭 서픽스 dat 파일에 대해서, 상기의 코드 샘플을 자유롭게 실행해 주세요.

이를 기반으로 자체 코드를 굴리거나 https://www.npmjs.com/package/tldts과 같은 패키지를 사용할 수 있습니다.

getDomainWithoutSuffix('google.com');        // returns `google`
getDomainWithoutSuffix('fr.google.com');     // returns `google`
getDomainWithoutSuffix('fr.google.google');  // returns `google`
getDomainWithoutSuffix('foo.google.co.uk');  // returns `google`
getDomainWithoutSuffix('t.co');              // returns `t`
getDomainWithoutSuffix('fr.t.co');           // returns `t`
getDomainWithoutSuffix('https://user:password@example.co.uk:8080/some/path?and&query#hash'); // returns `example`

부담없이 <a>에 접속해 주세요.href="javascript:document.location.href=document.location.origin+'/contact-us'" Us" class="> " linktitle="Click to Contact Us" class="coded_link" > Contact" »

PHP를 사용할 수 없었던 것에 비해, 확실히 효과가 있었습니다.

위의 몇 가지 답변에 기재된 접근법에 의해 동작하는 것을 테스트한 결과, 동작하는 것이 매우 빠르고 검증되었습니다.

언급URL : https://stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc

반응형