2013-08-18 12 views
6

Ho un ExternalServe (in esecuzione su localhost) Quando utilizza browser per richiedere:NodeJS - Come scaricare il file tramite richiesta?

localhost: 2013/ExternalServer/getfilebyname nomefile = getStatus.json

Poi il browser scaricato getStatus.json per scaricare la cartella.

Nel mio progetto NodeJS, voglio scaricare il file getStatus.json e ho fatto:

download.js

var http = require('http'); 
var fs = require('fs'); 

function getFile(){ 

    var file = fs.createWriteStream("./../lib/user.json"); 
    var req = http.get("http://localhost:2013/ExternalServer/getfilebyname?filename=getStatus.json", function(res) { 
    res.pipe(file); 
}); 
} 

getFile(); 

ma quando ho eseguito: node download.js il ritorno del sistema

<html><head><title>Apache Tomcat/8.0.0-RC1 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 401 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>This request requires HTTP authentication.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/8.0.0-RC1</h3></body></html> 

Come ripararlo?

migliore per quanto riguarda

risposta

6

hai trovato la seguente risposta di errore:

Questa richiesta richiede l'autenticazione HTTP

suggerendo di aggiungere le informazioni di autorizzazione nell'intestazione.Come:

var options = { 
    host: 'localhost', 
    port: 2013, 
    path: '/ExternalServer/getfilebyname?filename=getStatus.json', 
    headers: { 
    'Authorization': 'Basic ' + new Buffer(uname + ':' + pword).toString('base64') 
    }   
}; 

request = http.get(options, function(res) { 
    res.pipe(file); 
}); 

in caso di proxy, è possibile utilizzare la seguente intestazione invece:

Proxy-Authorization 
+0

se il mio account e la password sono entrambi "Tomcat", poi 'autorizzazione': ' Basic '+ new Buffer ("tomcat" +': '+ "tomcat) .toString (' base64 ')? – alongquan

+0

sì ... sembra funzionare. Giusto? –

+0

Grazie mille U, successo ...: D – alongquan

0

Il server vuole un nome utente e una password, o richiede un altro meccanismo di autorizzazione, prima che vi permetterà di accedere al file in questo modo.

per vedere come per la fornitura di un utente e una password quando si effettua la richiesta in node.js, guardiamo How to use http.client in Node.js if there is basic authorization

Come facciamo a sapere che questo potrebbe essere il problema?

due stringhe interessanti nel ritorno dell'impianto:

HTTP Status 401

e

This request requires HTTP authentication

Da Wikipedia: List of HTTP Status Codes

401 non autorizzato Simile a 403 Forbidden, ma in particolare per l'uso quando l'autenticazione è richiesta e non è riuscita o non è stata ancora fornita . [2] La risposta deve includere un campo di intestazione Autenticazione WWW contenente un problema applicabile alla risorsa richiesta. Vedere l'autenticazione di accesso di base e l'autenticazione di accesso al digest.

Un'altra possibilità è che un server possa essere impostato per emettere 401 anziché 403, ma in realtà non accetta nomi utente o password.

+0

Grazie mille – alongquan

Problemi correlati