기본 권한이 있는 경우 Node.js에서 http.client를 사용하는 방법
제목대로라면, 어떻게 해야 하나요?
내 코드는 다음과 같습니다.
var http = require('http');
// to access this url I need to put basic auth.
var client = http.createClient(80, 'www.example.com');
var request = client.request('GET', '/', {
'host': 'www.example.com'
});
request.end();
request.on('response', function (response) {
console.log('STATUS: ' + response.statusCode);
console.log('HEADERS: ' + JSON.stringify(response.headers));
response.setEncoding('utf8');
response.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
설정해야 합니다.Authorization
필드를 입력합니다.
인증 유형이 포함되어 있습니다.Basic
이 경우와 그 경우에username:password
Base64로 인코딩되는 조합:
var username = 'Test';
var password = '123';
var auth = 'Basic ' + Buffer.from(username + ':' + password).toString('base64');
// new Buffer() is deprecated from v6
// auth is: 'Basic VGVzdDoxMjM='
var header = {'Host': 'www.example.com', 'Authorization': auth};
var request = client.request('GET', '/', header);
Node.js http.request API Docs에서 다음과 유사한 것을 사용할 수 있습니다.
var http = require('http');
var request = http.request({'hostname': 'www.example.com',
'auth': 'user:password'
},
function (response) {
console.log('STATUS: ' + response.statusCode);
console.log('HEADERS: ' + JSON.stringify(response.headers));
response.setEncoding('utf8');
response.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
request.end();
var username = "Ali";
var password = "123";
var auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
var request = require('request');
var url = "http://localhost:5647/contact/session/";
request.get( {
url : url,
headers : {
"Authorization" : auth
}
}, function(error, response, body) {
console.log('body : ', body);
} );
더 쉬운 해결 방법은 URL에서 user:pass@host 형식을 직접 사용하는 것입니다.
요청 라이브러리 사용:
var request = require('request'),
username = "john",
password = "1234",
url = "http://" + username + ":" + password + "@www.example.com";
request(
{
url : url
},
function (error, response, body) {
// Do more stuff with 'body' here
}
);
저는 이것에 대해서도 작은 블로그 글을 썼습니다.
OSX에서 node.js 0.6.7을 사용하고 있는데 'Authorization'을 가져오지 못했습니다. 프록시에서 작동하려면 'Proxy-Authorization'으로 설정해야 했습니다. auth my test code:
var http = require("http");
var auth = 'Basic ' + new Buffer("username:password").toString('base64');
var options = {
host: 'proxyserver',
port: 80,
method:"GET",
path: 'http://www.google.com',
headers:{
"Proxy-Authorization": auth,
Host: "www.google.com"
}
};
http.get(options, function(res) {
console.log(res);
res.pipe(process.stdout);
});
var http = require("http");
var url = "http://api.example.com/api/v1/?param1=1¶m2=2";
var options = {
host: "http://api.example.com",
port: 80,
method: "GET",
path: url,//I don't know for some reason i have to use full url as a path
auth: username + ':' + password
};
http.get(options, function(rs) {
var result = "";
rs.on('data', function(data) {
result += data;
});
rs.on('end', function() {
console.log(result);
});
});
저는 최근에 이것을 우연히 발견했습니다.설정할 프록시 권한 부여 및 권한 부여 헤더 중 어느 헤더를 설정할지는 클라이언트가 통신 중인 서버에 따라 다릅니다.웹 서버인 경우 권한 부여를 설정하고 프록시인 경우 프록시-권한 부여 헤더를 설정해야 합니다.
이 코드는 많은 연구 끝에 제 경우에 효과가 있습니다.요청한 npm 패키지를 설치해야 합니다.
var url = "http://api.example.com/api/v1/?param1=1¶m2=2";
var auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
exports.checkApi = function (req, res) {
// do the GET request
request.get({
url: url,
headers: {
"Authorization": auth
}
}, function (error, response, body) {
if(error)
{ console.error("Error while communication with api and ERROR is : " + error);
res.send(error);
}
console.log('body : ', body);
res.send(body);
});
}
DNS를 사용하지 않고 더 깊이가 필요한 사용자의 경우 사용할 수도 있습니다.request
대신에get
간단히 대체함으로써.get
와 함께request
이와 같이:http.request({ ... })
):
http.get({
host: '127.0.0.1',
port: 443,
path: '/books?author=spongebob',
auth: 'user:p@ssword#'
}, resp => {
let data;
resp.on('data', chunk => {
data += chunk;
});
resp.on('end', () => console.log(data));
}).on('error', err => console.log(err));
이는 Node.js에 잘 설명되어 있지 않지만 다음을 사용할 수 있습니다.
require("http").get(
{
url: "www.example.com",
username: "username",
password: "mysecret",
},
(resp) => {
let data;
resp.on("data", (chunk) => (data += chunk));
resp.on("end", () => console.log(data));
}
)
.on("error", (err) => console.log(err));
gotpackage는 http.request의 options 객체를 상속하기 때문에,username
그리고.password
또한 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3905126/how-to-use-http-client-in-node-js-if-there-is-basic-authorization
'programing' 카테고리의 다른 글
VBA를 사용하여 MS-Excel(2010)에서 MS-Access Table을 쿼리하는 방법 (0) | 2023.08.20 |
---|---|
판다를 사용하여 전체 칼럼의 텍스트를 포장하는 방법은 무엇입니까? (0) | 2023.08.20 |
printf에서 양수에 대한 선행 '+'를 인쇄 (0) | 2023.08.20 |
스토리보드에 사용자 지정 글꼴이 있는 속성 문자열이 올바르게 로드되지 않음 (0) | 2023.08.20 |
Excel에서 사용자 정의 문서 속성에 문서 속성을 추가하는 방법은 무엇입니까? (0) | 2023.08.20 |