Bir URL'yi javascript'teki ana makine adı ve yola nasıl ayrıştırabilirim?


379

İp almak istiyorum

var a = "http://example.com/aa/bb/"

ve bir nesneye dönüştürerek

a.hostname == "example.com"

ve

a.pathname == "/aa/bb"

11
Eğer geçerli URL üzerinde çalışıyoruz durumda yanında erişebilir hostnameve pathnamedoğrudan locationnesne.
rvighne

1
"lastPathPart" ne olacak?
Victor

Normal ifade değil ama Python Modülü tldextract bunu tam olarak yapıyor: github.com/john-kurkowski/tldextract
Oliver Oliver

Yanıtlar:


395

Modern yol:

new URL("http://example.com/aa/bb/")

Özelliklere sahip bir nesne döndürür hostnameve pathnamebirlikte birkaç diğerleri .

İlk argüman göreceli veya mutlak bir URL'dir; göreli ise, ikinci bağımsız değişkeni (temel URL) belirtmeniz gerekir. Örneğin, geçerli sayfaya göre bir URL için:

new URL("/aa/bb/", location)

Tarayıcılara ek olarak, bu API, v7'den bu yana Node.js'de de kullanılabilirrequire('url').URL .


7
Güzel! Göreli URL'ler yine de kırıyor ... :( new URL('/stuff?foo=bar#baz')->SyntaxError: Failed to construct 'URL': Invalid URL
lakenen

56
Deneysel teknoloji: IE bunu desteklemiyor! developer.mozilla.org/tr-TR/docs/Web/API/URL/…
cwouter

10
@cwouter: Ancak IE'de çalışan Edge'de çalışır
rvighne

4
Bunu yapmanın yolu budur, kenar zaten üstte 3 versiyonudur yani önemli değil
Claudiu Creanga

7
JavaScript'in tarayıcılarda veya sunucularda çalışan URL'leri ayrıştırmak için yerleşik bir yolu olmadığı gerçeği oldukça üzücü ...
Skitterm

365
var getLocation = function(href) {
    var l = document.createElement("a");
    l.href = href;
    return l;
};
var l = getLocation("http://example.com/path");
console.debug(l.hostname)
>> "example.com"
console.debug(l.pathname)
>> "/path"

14
Bunun tarayıcılar arası uyumlu bir çözüm olduğundan emin misiniz?
cllpse

70
Bu, orijinal postere yardımcı olabilir / cevap verebilse de, bu cevabın yalnızca bir tarayıcıda JS çalışması yapan kişiler için çalışacağından, DOM'un işini yapması gerektiğine dikkat edilmelidir.
Adam Batkin

4
Yaratıcılığın yanı sıra sadeliğin bir başka örneği.
Saeed Neamati

26
Href göreli ise IE'de çalışmaz. l.anahtar adı boş olacaktır. Yalnızca tam URL'ler sağlıyorsanız, bu işe yarayacaktır.
Derek Prior

7
Mutlak URL'lerde bile IE (IE 11'de test edilmiştir), Chrome ve Firefox'tan farklı davranır. pathnameDiğer tarayıcılar değil IE , önde gelen eğik çizgi kaldırır. Böylece tarayıcınıza bağlı olarak /pathveya ile sonuçlanırsınız path.
TrueWill

299

burada bulundu: https://gist.github.com/jlong/2428561

var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.host;     // => "example.com:3000"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.hash;     // => "#hash"
parser.search;   // => "?search=test"
parser.origin;   // => "http://example.com:3000"

11
Geçerli tarayıcı konumunun ayrıştırılmış parçalarını almak istiyorsanız, ilk iki satırın parser = location;ve sonraki tüm satırların çalıştığını unutmayın. Chrome ve IE9'da şimdi denedim.
Lee Meador

9
Ayrıca pathnameIE'de eğik çizgi içermediğini unutmayın . Git şekil. : D
nevelis

3
IE için, "/" + parser.pathname
sbose komutunu

Uyarı: http:sadece domain.comhref'e geçseniz bile (herhangi bir protokol olmadan) dönecektir . Protokol eksik olup olmadığını kontrol etmek için bunu kullanmak istedim ve eğer öyleyse ekleyebilirsiniz, ama http: bu nedenle bu amaç için kullanamadığı varsayıyor.
Max Hodges

Ana bilgisayar adı aslında protokolü içerir. Chrome'un en son sürümünü test edin.
AndroidDev

109

Burada, aetiket davranışını taklit eden bir regexp kullanan basit bir işlev var .

Artıları

  • öngörülebilir davranış (tarayıcılar arası sorun yok)
  • DOM'ye ihtiyaç duymaz
  • Gerçekten kısa.

Eksileri

  • Normal ifadeyi okumak biraz zor

-

function getLocation(href) {
    var match = href.match(/^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
    return match && {
        href: href,
        protocol: match[1],
        host: match[2],
        hostname: match[3],
        port: match[4],
        pathname: match[5],
        search: match[6],
        hash: match[7]
    }
}

-

getLocation("http://example.com/");
/*
{
    "protocol": "http:",
    "host": "example.com",
    "hostname": "example.com",
    "port": undefined,
    "pathname": "/"
    "search": "",
    "hash": "",
}
*/

getLocation("http://example.com:3000/pathname/?search=test#hash");
/*
{
    "protocol": "http:",
    "host": "example.com:3000",
    "hostname": "example.com",
    "port": "3000",
    "pathname": "/pathname/",
    "search": "?search=test",
    "hash": "#hash"
}
*/

DÜZENLE:

İşte düzenli ifadenin dökümü

var reURLInformation = new RegExp([
    '^(https?:)//', // protocol
    '(([^:/?#]*)(?::([0-9]+))?)', // host (hostname and port)
    '(/{0,1}[^?#]*)', // pathname
    '(\\?[^#]*|)', // search
    '(#.*|)$' // hash
].join(''));
var match = href.match(reURLInformation);

4
Göreli URL'lerle çalışmaz. Normal ifade yaparken RFC-3986'yı takip ettiniz mi? > getLocation ("// example.com/"); null> getLocation ("/ pathname /? search"); null> getLocation ("/ pathname /"); null> getLocation ("göreli"); null
gregers

2
Bunun DOM'yi nasıl kullanmadığını seviyorum, ancak gregers iyi bir noktaya sahip. Bunun göreli yolları işleyebilmesi iyi olurdu. Boşlukları doldurmak ve kod eklemek için window.location (a a element) kullanılması gerekir. Bu durumda yöntem ikiyüzlü olur. Bir alternatif olmadığı sürece, bunun nasıl mükemmel bir şekilde çözülebileceğinden emin değilim.
Turbo

Orijinal url ile href anahtarı eklendi, bu dom uygulaması ile bu dönüş nesnesi üzerinde tutarlılık sağlar.
mattdlockyer

2
Birinin göreli URL'leri ayrıştırması gerekiyorsa, güncellenen normal ifade: / ^ (? :( https? \:) \ / \ /)? (([^: \ /? #] *) (?: \: ([0 -9] +))?) ([\ /] {0,1} [^? #] *) (\? [^ #] * |) (#. * |) $ /
shlensky

75
var loc = window.location;  // => "http://example.com:3000/pathname/?search=test#hash"

currentUrl öğesini döndürür.

Kendi dizenizi URL olarak geçirmek istiyorsanız ( IE11'de çalışmaz ):

var loc = new URL("http://example.com:3000/pathname/?search=test#hash")

Sonra aşağıdaki gibi ayrıştırabilirsiniz:

loc.protocol; // => "http:"
loc.host;     // => "example.com:3000"
loc.hostname; // => "example.com"
loc.port;     // => "3000"
loc.pathname; // => "/pathname/"
loc.hash;     // => "#hash"
loc.search;   // => "?search=test"

60

freddiefujiwara'nın yanıtı oldukça iyi, ancak Internet Explorer'da göreli URL'leri de desteklemem gerekiyordu. Aşağıdaki çözümü buldum:

function getLocation(href) {
    var location = document.createElement("a");
    location.href = href;
    // IE doesn't populate all link properties when setting .href with a relative URL,
    // however .href will return an absolute URL which then can be used on itself
    // to populate these additional fields.
    if (location.host == "") {
      location.href = location.href;
    }
    return location;
};

Şimdi gerekli özellikleri almak için kullanın:

var a = getLocation('http://example.com/aa/bb/');
document.write(a.hostname);
document.write(a.pathname);

JSFiddle örneği: http://jsfiddle.net/6AEAB/


4
Bu kabul edilen cevap olmalı. Göreli-mutlak URL işlemeyi çok akıllıca kullanın. +1
L0j1k

Görünüşe göre ilk kez bir JSFiddle bağlantısı öldüğünde: stackoverflow.com/questions/25179964/…
Claus

3
Bu harika çalıştı, ancak başkalarına yardımcı olacağını umduğum bir güncelleme vardı. Ben bir postMessage isteği kökeni kontrol etmek için kullanıyorum ve bağlantı noktası varsayılan bağlantı noktası (80 veya 443) olduğunda, yol ekli değil. var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname; var locationOrigin = location.protocol + '//' + locationHost;
Şartlı olarak URL'mi

2
Bu yorumu bu çözümün daha popüler bir varyantında başka bir yerde yaptım, ancak bu benim en sevdiğim çözüm olduğu için burada tekrarlamak istedim. IE11'de, href'de bir kullanıcı adına sahip olmak, tüm bu özellik okumalarının güvenlik hataları atmasına neden olur. Örnek: " example.com " iyi çalışır. Ancak " kullaniciadi@www.example.com " veya " kullaniciadi: şifre@www.example.com ", bağlantı elemanının diğer özelliklerinden birine (örneğin: hash) başarısız olma ve iğrenç bir hata atma girişiminde bulunacaktır.
Clippy

17

js-uri (Google Code'da bulunur) bir dize URL'si alır ve bundan bir URI nesnesini çözer:

var some_uri = new URI("http://www.example.com/foo/bar");

alert(some_uri.authority); // www.example.com
alert(some_uri);           // http://www.example.com/foo/bar

var blah      = new URI("blah");
var blah_full = blah.resolve(some_uri);
alert(blah_full);         // http://www.example.com/foo/blah

Teşekkürler!!! ama uri = new Location (" example.com/aa/bb" ) typeof (window.location) == typeof (uri)
freddiefujiwara

Window.location bir dize olduğundan, bunun nasıl mümkün veya yararlı olacağını gerçekten görmüyorum. Birinden diğerine kolayca dönüştürebildiğinizde neden türlerin eşleşmesi gerekiyor?
Rex M

developer.mozilla.org/tr/DOM/window.location çok güzel bir api !! Yani umarım
String.'yi

1
Window.location ayarı tarayıcıyı değiştirmeyeceği için değiştirir.
epascarello

1
Hmm doğru. window.location bir dize değildir, ancak bir dizeden atanabilir. Bu taklit edilebilir emin değilim, yeni bir uri nesnesine konum prototip atama denedim ama işe yaramadı.
Rex M

12

Basit düzenli ifade ne olacak?

url = "http://www.example.com/path/to/somwhere";
urlParts = /^(?:\w+\:\/\/)?([^\/]+)(.*)$/.exec(url);
hostname = urlParts[1]; // www.example.com
path = urlParts[2]; // /path/to/somwhere

Geçerli bir şeyi ayrıştırmaya çalışın //user:password@example.com/path/x?y=zve neden basit düzenli ifadenin onu kesmediğini göreceksiniz. Şimdi ona geçersiz bir şey atın ve tahmin edilebilir bir şekilde kurtarılmalıdır.
Mikko Rantalainen

Basit regex basit sorunlar içindir :) Ama bana böyle bir url regex tarafından ayrılmaz olduğunu, bu sadece birkaç tweaks gerekir bana gelmiyor. Ama daha karmaşık ve kurşun geçirmez bir şeye ihtiyacım olursa muhtemelen bir kütüphane için giderdim.
svestka

12

Bugün bu sorunu karşılıyorum ve buldum: URL - MDN Web API'leri

var url = new URL("http://test.example.com/dir/subdir/file.html#hash");

Bu dönüş:

{ hash:"#hash", host:"test.example.com", hostname:"test.example.com", href:"http://test.example.com/dir/subdir/file.html#hash", origin:"http://test.example.com", password:"", pathname:"/dir/subdir/file.html", port:"", protocol:"http:", search: "", username: "" }

İlk katkımın size yardımcı olacağını umuyoruz!


Yinelenen cevap
Martin van Driel

6
Evet ama üstteki adam 2017'de daha kötüsünü güncelledi, ben 2016'da gönderiyorum.
A. Moynet

Ah benim kötü, üzgünüm
Martin van Driel

9

İşte https://gist.github.com/1847816 adresinden kopyaladığım bir sürüm , ancak yeniden yazıldığından okunması ve hata ayıklaması daha kolay. Bağlantı verilerinin "sonuç" adlı başka bir değişkene kopyalanmasının amacı, bağlantı verilerinin oldukça uzun olması ve bu nedenle sonuca sınırlı sayıda değerin kopyalanmasının sonucu basitleştirmeye yardımcı olmasıdır.

/**
 * See: https://gist.github.com/1847816
 * Parse a URI, returning an object similar to Location
 * Usage: var uri = parseUri("hello?search#hash")
 */
function parseUri(url) {

  var result = {};

  var anchor = document.createElement('a');
  anchor.href = url;

  var keys = 'protocol hostname host pathname port search hash href'.split(' ');
  for (var keyIndex in keys) {
    var currentKey = keys[keyIndex]; 
    result[currentKey] = anchor[currentKey];
  }

  result.toString = function() { return anchor.href; };
  result.requestUri = result.pathname + result.search;  
  return result;

}

6

Tarayıcılar arası URL ayrıştırma , IE 6, 7, 8 ve 9 için göreli yol sorununun etrafında çalışır :

function ParsedUrl(url) {
    var parser = document.createElement("a");
    parser.href = url;

    // IE 8 and 9 dont load the attributes "protocol" and "host" in case the source URL
    // is just a pathname, that is, "/example" and not "http://domain.com/example".
    parser.href = parser.href;

    // IE 7 and 6 wont load "protocol" and "host" even with the above workaround,
    // so we take the protocol/host from window.location and place them manually
    if (parser.host === "") {
        var newProtocolAndHost = window.location.protocol + "//" + window.location.host;
        if (url.charAt(1) === "/") {
            parser.href = newProtocolAndHost + url;
        } else {
            // the regex gets everything up to the last "/"
            // /path/takesEverythingUpToAndIncludingTheLastForwardSlash/thisIsIgnored
            // "/" is inserted before because IE takes it of from pathname
            var currentFolder = ("/"+parser.pathname).match(/.*\//)[0];
            parser.href = newProtocolAndHost + currentFolder + url;
        }
    }

    // copies all the properties to this object
    var properties = ['host', 'hostname', 'hash', 'href', 'port', 'protocol', 'search'];
    for (var i = 0, n = properties.length; i < n; i++) {
      this[properties[i]] = parser[properties[i]];
    }

    // pathname is special because IE takes the "/" of the starting of pathname
    this.pathname = (parser.pathname.charAt(0) !== "/" ? "/" : "") + parser.pathname;
}

Kullanımı ( demo JSFiddle burada ):

var myUrl = new ParsedUrl("http://www.example.com:8080/path?query=123#fragment");

Sonuç:

{
    hash: "#fragment"
    host: "www.example.com:8080"
    hostname: "www.example.com"
    href: "http://www.example.com:8080/path?query=123#fragment"
    pathname: "/path"
    port: "8080"
    protocol: "http:"
    search: "?query=123"
}

5

IE, Firefox ve Chrome'da çalışan modern bir çözüm arayanlar için:

Köprü öğesi kullanan bu çözümlerin hiçbiri kromda aynı şekilde çalışmaz.Chrome'a ​​geçersiz (veya boş) bir URL iletirseniz, komut dosyasının her zaman çağrıldığı ana bilgisayarı döndürür. Yani IE'de boş, Chrome'da localhost (ya da her neyse) alacaksınız.

Yönlendirene bakmaya çalışıyorsanız, bu aldatıcıdır. Geri döndüğünüz ana bilgisayarın, bununla başa çıkmak için orijinal URL'de olduğundan emin olmak istersiniz:

    function getHostNameFromUrl(url) {
        // <summary>Parses the domain/host from a given url.</summary>
        var a = document.createElement("a");
        a.href = url;

        // Handle chrome which will default to domain where script is called from if invalid
        return url.indexOf(a.hostname) != -1 ? a.hostname : '';
    }

Bu dikkate alınması gereken çok önemli bir şey!
2rs2ts

Bu göreceli URL'leri tamamen kırıyor!
lakenen

4

AngularJS yolu - burada keman: http://jsfiddle.net/PT5BG/4/

<!DOCTYPE html>
<html>
<head>
    <title>Parse URL using AngularJS</title>
</head>
<body ng-app ng-controller="AppCtrl" ng-init="init()">

<h3>Parse URL using AngularJS</h3>

url: <input type="text" ng-model="url" value="" style="width:780px;">

<ul>
    <li>href = {{parser.href}}</li>
    <li>protocol = {{parser.protocol}}</li>
    <li>host = {{parser.host}}</li>
    <li>hostname = {{parser.hostname}}</li>
    <li>port = {{parser.port}}</li>
    <li>pathname = {{parser.pathname}}</li>
    <li>hash = {{parser.hash}}</li>
    <li>search = {{parser.search}}</li>
</ul>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>

<script>
function AppCtrl($scope) {

    $scope.$watch('url', function() {
        $scope.parser.href = $scope.url;
    });

    $scope.init = function() {
        $scope.parser = document.createElement('a');
        $scope.url = window.location;
    }

}
</script>

</body>
</html>

2
Kullanacak $documentve $windowhizmet edecek daha açısal olacak
Cherniv

3

Modül desenini kullanarak basit ve sağlam çözüm. Bu, pathnameher zaman önde gelen eğik çizgi ( /) bulunmayan IE için bir düzeltme içerir .

Daha dinamik bir ayrıştırıcı sunan bir JSFiddle ile birlikte bir Gist oluşturdum . Kontrol etmenizi ve geri bildirimde bulunmanızı öneririm.

var URLParser = (function (document) {
    var PROPS = 'protocol hostname host pathname port search hash href'.split(' ');
    var self = function (url) {
        this.aEl = document.createElement('a');
        this.parse(url);
    };
    self.prototype.parse = function (url) {
        this.aEl.href = url;
        if (this.aEl.host == "") {
           this.aEl.href = this.aEl.href;
        }
        PROPS.forEach(function (prop) {
            switch (prop) {
                case 'hash':
                    this[prop] = this.aEl[prop].substr(1);
                    break;
                default:
                    this[prop] = this.aEl[prop];
            }
        }, this);
        if (this.pathname.indexOf('/') !== 0) {
            this.pathname = '/' + this.pathname;
        }
        this.requestUri = this.pathname + this.search;
    };
    self.prototype.toObj = function () {
        var obj = {};
        PROPS.forEach(function (prop) {
            obj[prop] = this[prop];
        }, this);
        obj.requestUri = this.requestUri;
        return obj;
    };
    self.prototype.toString = function () {
        return this.href;
    };
    return self;
})(document);

gösteri

Çıktı

{
 "protocol": "https:",
 "hostname": "www.example.org",
 "host": "www.example.org:5887",
 "pathname": "/foo/bar",
 "port": "5887",
 "search": "?a=1&b=2",
 "hash": "section-1",
 "href": "https://www.example.org:5887/foo/bar?a=1&b=2#section-1",
 "requestUri": "/foo/bar?a=1&b=2"
}
{
 "protocol": "ftp:",
 "hostname": "www.files.com",
 "host": "www.files.com:22",
 "pathname": "/folder",
 "port": "22",
 "search": "?id=7",
 "hash": "",
 "href": "ftp://www.files.com:22/folder?id=7",
 "requestUri": "/folder?id=7"
}


3

Neden kullanmıyorsunuz?

        $scope.get_location=function(url_str){
        var parser = document.createElement('a');
        parser.href =url_str;//"http://example.com:3000/pathname/?search=test#hash";
        var info={
            protocol:parser.protocol,   
            hostname:parser.hostname, // => "example.com"
            port:parser.port,     // => "3000"
            pathname:parser.pathname, // => "/pathname/"
            search:parser.search,   // => "?search=test"
            hash:parser.hash,     // => "#hash"
            host:parser.host, // => "example.com:3000"      
        }
        return info;
    }
    alert( JSON.stringify( $scope.get_location("http://localhost:257/index.php/deploy/?asd=asd#asd"),null,4 ) );

3

Ayrıca kullanabilirsiniz parse_url()gelen işlevi Locutus projesi (eski php.js).

Kod:

parse_url('http://username:password@hostname/path?arg=value#anchor');

Sonuç:

{
  scheme: 'http',
  host: 'hostname',
  user: 'username',
  pass: 'password',
  path: '/path',
  query: 'arg=value',
  fragment: 'anchor'
}


@StanQuinn, çünkü php.js ismini Locutus olarak değiştirdi. Cevabımı yeni bağlantıyla güncelledim.
Andrey Rudenko

3
function parseUrl(url) {
    var m = url.match(/^(([^:\/?#]+:)?(?:\/\/((?:([^\/?#:]*):([^\/?#:]*)@)?([^\/?#:]*)(?::([^\/?#:]*))?)))?([^?#]*)(\?[^#]*)?(#.*)?$/),
        r = {
            hash: m[10] || "",                   // #asd
            host: m[3] || "",                    // localhost:257
            hostname: m[6] || "",                // localhost
            href: m[0] || "",                    // http://username:password@localhost:257/deploy/?asd=asd#asd
            origin: m[1] || "",                  // http://username:password@localhost:257
            pathname: m[8] || (m[1] ? "/" : ""), // /deploy/
            port: m[7] || "",                    // 257
            protocol: m[2] || "",                // http:
            search: m[9] || "",                  // ?asd=asd
            username: m[4] || "",                // username
            password: m[5] || ""                 // password
        };
    if (r.protocol.length == 2) {
        r.protocol = "file:///" + r.protocol.toUpperCase();
        r.origin = r.protocol + "//" + r.host;
    }
    r.href = r.origin + r.pathname + r.search + r.hash;
    return m && r;
};
parseUrl("http://username:password@localhost:257/deploy/?asd=asd#asd");

Hem mutlak hem de göreli URL'lerle çalışır


abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
树 茶树 和 葡萄 树

@ 山 茶树 和 葡萄 树 userinfo alt bileşenini doğru şekilde kullanmak için kodu güncelledim. Yorumunuz için teşekkürler, bu sorunu daha önce fark etmedim
Nikolay

Bu normal ifade seviyorum
Kunal

2

Tekerleği yeniden icat etmeyi bırakın. Https://github.com/medialize/URI.js/ kullanın

var uri = new URI("http://example.org:80/foo/hello.html");
// get host
uri.host(); // returns string "example.org:80"
// set host
uri.host("example.org:80");

5
Çünkü her problemi çözmek istediđinizde ... bir kütüphane mi kullanýyorsunuz? Tamam ... (değil)
jiminikiz

4
Her zaman değil (aslında neredeyse hiç), ancak URL'ler ayrıştırmak çok zor, RFC'lerde birçok ayrıntı var. Binlerce kişi tarafından kullanılmış ve test edilmiş bir kütüphane kullanmak daha iyidir.
Hugo Sequeira

Başka birinin tekerleği bir kütüphane ile yeniden icat etmesi yerine, yerleşik olanı kullanmaya ne dersiniz? Bkz. Stackoverflow.com/a/24006120/747739
Phil

Yerleşik işlev için IE11 desteği yoktur, bu nedenle bu kütüphane mükemmeldir. Bir kütüphaneyi asla kullanmamayı söylemek, asla jQuery kullanmamamız ve sadece saçma olan yerel kodu yazmamız gerektiğini söylemek gibidir. Her geliştiricinin farklı bir kullanım durumu vardır, 'en iyi' bir yol yoktur, bazen vanilya / yerli en iyi çalışır, bazen ... geliştiricilerin% 92'sinin hala öğrenmesi gereken bir şey.
tno2007

1

Sadece url.js kütüphanesini kullanın (web ve node.js için).

https://github.com/websanova/js-url

url: http://example.com?param=test#param=again

url('?param'); // test
url('#param'); // again
url('protocol'); // http
url('port'); // 80
url('domain'); // example.com
url('tld'); // com

etc...

1

ilk cevapla basit bir saldırı

var getLocation = function(href=window.location.href) {
    var l = document.createElement("a");
    l.href = href;
    return l;
};

Geçerli ana bilgisayar adı dışarı rakama bile argüman olmadan kullanılabilir bu kutu getLocation (). hostname mevcut ana makine adını verecek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.