javascript - NodeJS - Bagaimana untuk Memuat turun fail melalui Permintaan?
Saya mempunyai ExternalServe (berjalan di Localhost) Apabila saya menggunakan Pelayar untuk membuat permintaan:
localhost:2013/ExternalServer/getfilebyname?filename=getStatus.json
Kemudian pelayar memuat turun getStatus.json ke Folder Muat Turun.
Dalam projek NodeJS saya, saya ingin memuat turun fail getStatus.json dan saya telah membuat:
muat turun.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();
tetapi apabila saya jalankan: node download.js sistem memulangkan
<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>
Bagaimana nak baikinya?
Salam sejahtera
Jawapan #1
Anda sedang menerima respons ralat berikut:
Permintaan ini memerlukan pengesahan HTTP
Mencadangkan untuk menambah maklumat Kebenaran dalam pengepala. Seperti:
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);
});
sekiranya menggunakan proksi, anda boleh menggunakan pengepala berikut sebagai gantinya:
Proxy-Authorization
Jawapan #2
Pelayan memerlukan nama pengguna dan kata laluan, atau memerlukan mekanisme kebenaran lain, sebelum ia membenarkan anda mengakses fail dengan cara ini.
Untuk melihat cara membekalkan pengguna dan kata laluan semasa membuat permintaan dalam node.js, lihat Bagaimana menggunakan http.client dalam Node.js jika terdapat kebenaran asas
Bagaimana kita tahu ini boleh menjadi masalah?
Dua rentetan yang menarik dalam sistem mengembalikan:
HTTP Status 401dan
This request requires HTTP authenticationDari Wikipedia: Senarai Kod Status HTTP
401 Tidak Dibenarkan Serupa dengan 403 Terlarang, tetapi khusus untuk digunakan apabila pengesahan diperlukan dan telah gagal atau belum disediakan. Respon mesti termasuk medan tajuk WWW-Authenticate yang mengandungi cabaran yang sesuai untuk sumber yang diminta. Lihat pengesahan akses Asas dan pengesahan akses Digest.
Satu kemungkinan lain ialah server boleh disediakan untuk mengeluarkan 401 dan bukannya 403, tetapi sebenarnya tidak menerima mana-mana nama pengguna atau kata laluan.
