Как получить имя домена/хоста реферера с помощью JavaScript?


Я знаю, что могу получить имя хоста текущей страницы, просто сделав:

var myhostname = location.hostname;

но как я могу получить имя хоста реферер? Я могу получить реферер по

var referrer = document.referrer;

но, к сожалению, нет document.referrer.hostname доступно в JavaScript. Как я могу получить это значение?

пример того, где это полезно, если кто-то нажимает ссылку на google.com. я хочу быть в состоянии восстановить google.com из реферера (не страницы и строки запроса).

7 57

7 ответов:

на разбор. document.referrer.split( '/' ); будет вам близко. Или взгляните на это

http://blog.stevenlevithan.com/archives/parseuri

если реферер приходит из браузера, он будет вменяемым-но на всякий случай вы хотите более надежный парсинг.

Это:

document.referrer.split('/')[2];

пример.

function parseURL(url) {
    var a=document.createElement('a');
    a.href=url;
    return a.hostname;
}

Это довольно старый вопрос, тем не менее, это может помочь любому последователей.

можно использовать var referrer = new URL(document.referrer).hostname.

см.https://developer.mozilla.org/en-US/docs/Web/API/URL.URL.

вы можете использовать регулярное выражение для извлечения этих данных.

string.match(/^http([s]?)://([a-zA-Z0-9-_\.]+)(:[0-9]+)?/);

Он включает в себя протокол, но document.origin будет работать. Он работает через заголовок Origin, в котором нет информации о пути, включенной в него.

Привет используйте эту функцию, чтобы получить доменное имя.

function getDomain(url) {
    if (url) {
        var match = /(?:https?:\/\/)?(?:\w+:\/)?[^:?#\/\s]*?([^.\s]+\.(?:[a-z]{2,}|co\.uk|org\.uk|ac\.uk|org\.au|com\.au))(?:[:?#\/]|$)/gi
                .exec(url);
        return match ? match[1] : null;
    } else
        return null;
}