it-swarm.com.de

Rufen Sie Protokoll, Domäne und Port von der URL ab

Ich muss das vollständige Protokoll, die Domäne und den Port von einer bestimmten URL extrahieren. Zum Beispiel:

https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
251
yelo3

holen Sie sich zuerst die aktuelle Adresse

var url = window.location.href

Dann parsen Sie einfach diese Zeichenfolge

var arr = url.split("/");

ihre URL ist:

var result = arr[0] + "//" + arr[2]

Hoffe das hilft

124
wezzy
var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
500
Shef

Keine dieser Antworten scheint die Frage vollständig zu beantworten, die eine willkürliche URL erfordert, nicht spezifisch die URL der aktuellen Seite.

Methode 1: Verwenden Sie die URL-API (Einschränkung: keine Unterstützung von IE11)

Sie können die URL-API verwenden (nicht von IE11 unterstützt, aber überall verfügbar ).

Dies macht es auch leicht, auf search params zuzugreifen. Ein weiterer Bonus: Es kann in einem Web Worker verwendet werden, da es nicht vom DOM abhängt.

const url = new URL('http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');

Methode 2 (alte Methode): Verwenden Sie den integrierten Parser des Browsers im DOM

Verwenden Sie diese Option, wenn Sie dies auch für ältere Browser benötigen.

//  Create an anchor element (note: no need to append this element to the document)
const url = document.createElement('a');
//  Set href to any path
url.setAttribute('href', 'http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');

Das ist es!

Der eingebaute Parser des Browsers hat seine Aufgabe bereits erfüllt. Jetzt können Sie einfach die benötigten Teile nehmen (beachten Sie, dass dies für beide Methoden oben funktioniert):

//  Get any piece of the url you're interested in
url.hostname;  //  'example.com'
url.port;      //  12345
url.search;    //  '?startIndex=1&pageSize=10'
url.pathname;  //  '/blog/foo/bar'
url.protocol;  //  'http:'

Bonus: Suche nach Params

Wahrscheinlich möchten Sie wahrscheinlich auch die Such-URL-Parameter auflösen, da "? StartIndex = 1 & pageSize = 10" nicht für sich allein verwendbar ist.

Wenn Sie die Methode 1 (URL-API) oben verwendet haben, verwenden Sie einfach die Suchparameter von searchParams:

url.searchParams.get('searchIndex');  // '1'

Oder um alle Parameter zu erhalten:

Array
    .from(url.searchParams)
    .reduce((accum, [key, val]) => {
        accum[key] = val;
        return accum;
    }, {});
// -> { startIndex: '1', pageSize: '10' }

Wenn Sie Methode 2 (die alte Methode) verwendet haben, können Sie Folgendes verwenden:

// Simple object output (note: does NOT preserve duplicate keys).
var params = url.search.substr(1); // remove '?' prefix
params
    .split('&')
    .reduce((accum, keyval) => {
        const [key, val] = keyval.split('=');
        accum[key] = val;
        return accum;
    }, {});
// -> { startIndex: '1', pageSize: '10' }
148
David Calhoun

Aus irgendeinem Grund sind alle Antworten übertrieben. Das ist alles was du brauchst:

window.location.Origin

Weitere Informationen finden Sie hier: https://developer.mozilla.org/en-US/docs/Web/API/window.location#Properties

111
Pijusn

Wie bereits erwähnt, gibt es den noch nicht vollständig unterstützten window.location.Origin. Statt ihn zu verwenden oder eine neue zu erstellende Variable zu erstellen, bevorzuge ich es, darauf zu achten, ob es nicht gesetzt ist.

Zum Beispiel;

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

Ich habe tatsächlich vor ein paar Monaten darüber geschrieben Ein Update für window.location.Origin

49
Toby

Gastgeber

var url = window.location.Host;

gibt localhost:2679 zurück

Hostname

var url = window.location.hostname;

gibt localhost zurück

28
Miroslav Holec

Die Protokolleigenschaft legt das Protokoll der aktuellen URL einschließlich des Doppelpunkts (:) fest oder gibt dieses zurück.

Das heißt, wenn Sie nur den HTTP/HTTPS-Teil erhalten möchten, können Sie Folgendes tun:

var protocol = window.location.protocol.replace(/:/g,'')

Für die Domain können Sie verwenden:

var domain = window.location.hostname;

Für den Port können Sie verwenden:

var port = window.location.port;

Beachten Sie, dass der Port eine leere Zeichenfolge ist, wenn er in der URL nicht sichtbar ist. Zum Beispiel:

Wenn Sie 80/443 anzeigen müssen, wenn Sie keinen Anschluss verwenden

var port = window.location.port || (protocol === 'https' ? '443' : '80');

Tatsächlich funktioniert window.location.Origin in Browsern, die den Standards entsprechen, einwandfrei. IE befolgt keine Standards.

Aus diesem Grund funktionierte das bei IE, FireFox und Chrome:

var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');

für mögliche zukünftige Erweiterungen, die Konflikte verursachen könnten, habe ich vor dem Objekt "location" die Referenz "window" angegeben.

var full = window.location.protocol+'//'+window.location.hostname+(window.location.port ? ':'+window.location.port: '');
6
cpu

window.location.Origin reicht aus, um dasselbe zu erhalten.

5
int soumen
var getBasePath = function(url) {
    var r = ('' + url).match(/^(https?:)?\/\/[^/]+/i);
    return r ? r[0] : '';
};
2
haipeng

Verwenden Sie einen regulären Ausdruck (Regex), der sehr nützlich ist, wenn Sie Sachen validieren/extrahieren oder sogar einige einfache Parsingfunktionen in Javascript durchführen möchten.

Die Regex ist: 

/([a-zA-Z]+):\/\/([\-\w\.]+)(?:\:(\d{0,5}))?/

Demonstration:

function breakURL(url){

     matches = /([a-zA-Z]+):\/\/([\-\w\.]+)(?:\:(\d{0,5}))?/.exec(url);

     foo = new Array();

     if(matches){
          for( i = 1; i < matches.length ; i++){ foo.Push(matches[i]); }
     }

     return foo
}

url = "https://www.google.co.uk:55699/search?q=http%3A%2F%2F&oq=http%3A%2F%2F&aqs=chrome..69i57j69i60l3j69i65l2.2342j0j4&sourceid=chrome&ie=UTF-8"


breakURL(url);       // [https, www.google.co.uk, 55699] 
breakURL();          // []
breakURL("asf");     // []
breakURL("asd://");  // []
breakURL("asd://a"); // [asd, a, undefined]

Jetzt können Sie auch die Validierung durchführen.

2
ed9w2in6
var http = location.protocol;
var slashes = http.concat("//");
var Host = slashes.concat(window.location.hostname);
2
Elankeeran

Hier ist die Lösung, die ich verwende:

const result = `${ window.location.protocol }//${ window.location.Host }`;
0
JulienRioux

Einfache Antwort, die für alle Browser funktioniert:

let Origin;

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

Origin = window.location.Origin;
0
Mike Hawes

Warum nicht benutzen:

let full = window.location.Origin
0
Maik de Kruif

ES6-Stil mit konfigurierbaren Parametern.

/**
 * Get the current URL from `window` context object.
 * Will return the fully qualified URL if neccessary:
 *   getCurrentBaseURL(true, false) // `http://localhost/` - `https://localhost:3000/`
 *   getCurrentBaseURL(true, true) // `http://www.example.com` - `https://www.example.com:8080`
 *   getCurrentBaseURL(false, true) // `www.example.com` - `localhost:3000`
 *
 * @param {boolean} [includeProtocol=true]
 * @param {boolean} [removeTrailingSlash=false]
 * @returns {string} The current base URL.
 */
export const getCurrentBaseURL = (includeProtocol = true, removeTrailingSlash = false) => {
  if (!window || !window.location || !window.location.hostname || !window.location.protocol) {
    console.error(
      `The getCurrentBaseURL function must be called from a context in which window object exists. Yet, window is ${window}`,
      [window, window.location, window.location.hostname, window.location.protocol],
    )
    throw new TypeError('Whole or part of window is not defined.')
  }

  const URL = `${includeProtocol ? `${window.location.protocol}//` : ''}${window.location.hostname}${
    window.location.port ? `:${window.location.port}` : ''
  }${removeTrailingSlash ? '' : '/'}`

  // console.log(`The URL is ${URL}`)

  return URL
}
0
Sébastien

window.location.protocol + '//' + window.location.Host

0
Code_Worm