2017-08-20 2 views
1

Ich kann keine Anmeldeinformationen übergeben, um das Authentifizierungsdialogfeld zu umgehen, wenn die GET-Anforderung eine Statusüberprüfung an die RabbitMQ-API sendet. Wenn ich url mit den Anmeldeinformationen innerhalb (zB http://user:[email protected]:15672/api/aliveness-test/%2F)So übergeben Sie Anmeldeinformationen über eine Abrufanforderung

es erhält den Fehler unten passieren -

rabbitCol.js:12 Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'Window': Request cannot be constructed from a URL that includes credentials: http://user:[email protected]:15672/api/aliveness-test/%2F 
    at rabbitColChecking (rabbitCol.js:12) 
    at allReqInt (allReqInt.js:5) 
    at HTMLAnchorElement.onclick ((index):108) 

Wenn ich innerhalb der URL ohne die Anmeldeinformationen Anfrage sendet es geschickt tatsächlich die Anforderung ok aber der Authentifizierungsdialog erscheint in der Benutzeroberfläche und es ist nervig und nicht so schön.

Der Antrag ist unter -

var fetch = require('node-fetch'); 

    async function rabbitColChecking() { 
     let index; 
     const hostsRB = ['http://user:[email protected]:15672/api/aliveness-test/%2F', 'http://user:[email protected]:15672/api/aliveness-test/%2F', 'http://user:[email protected]:15672/api/aliveness-test/%2F', 'http://user:[email protected]:15672/api/aliveness-test/%2F]; 
     let lengthVal = hostsRB.length; 
     for(let hostIndxRB = 0; hostIndxRB < lengthVal; hostIndxRB++) { 
      index = hostIndxRB; 
      let url = hostsRB[hostIndxRB]; 
      fetch(url, {method: 'GET', credentials:'same-origin', redirect: 'follow', agent: null, headers: {"Content-Type": "text/plain"}, timeout: 5000} 
     ).then(function (hostindxRB, res) { 
       handleLedResponseRB(res, hostindxRB); 
      }.bind(null, hostIndxRB)); 
      await sleep(500); 
     } 
    } 

Der Auslöser diese Anforderung zu senden innerhalb einiger HTML-Datei ein "Onclick" -Funktion ist.

Ich habe tatsächlich jede Lösung ausprobiert, die ich im Netz sah, aber nichts löst diesen Anwendungsfall.

Antwort

1

Sie können sich mit Ihrem Benutzernamen und ein Passwort senden holen mit dem Authorization Header, wie folgt aus:

fetch(url, { 
    method: 'GET', 
    credentials: 'same-origin', 
    redirect: 'follow', 
    agent: null, 
    headers: { 
     "Content-Type": "text/plain", 
     'Authorization': 'Basic ' + btoa('username:password'), 
    }, 
    timeout: 5000 
}); 

btoa eine Funktion von Browsern zur Verfügung gestellt ist. Wenn Sie es auf der Serverseite verwenden möchten, können Sie das btoa Npm-Modul benötigen, um die Aufgabe zu erledigen.

+0

Danke Patrick, aber es zeigt immer noch den Pop-up-Dialog. Bitte beachten Sie die aktualisierte Code-Zeile unten - fetch (URL, {Methode: 'GET', Modus: 'no-cors', Zugangsdaten: 'same-origin', Weiterleitung: 'follow', Agent: null, headers: {" Inhaltstyp ":" text/html, application/xhtml + xml, application/xml "," Autorisierung ":" Basic {{token}} "+ btoa ('benutzer: pass')}, timeout: 5000} –

+0

Hilfreich Antwort: Danke, Patrick! Ist es möglich, dass die runde runde Klammer fehlt? –

+0

In der Tat, danke, dass du das herausgibst. Ich habe das Codebeispiel bearbeitet. –

Verwandte Themen