gpt4 book ai didi

node.js - 使用 http 基本身份验证从应用程序获取请求 (node.js)

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:26 25 4
gpt4 key购买 nike

我有一个在 express.js 中使用 http 基本身份验证的 nodejs 应用。

在这个应用程序中,我向外部网页发出 http.get 请求以加载和解析 html。

使用基本身份验证,我在每个 http.get(url, function(){}) 请求外部主机时都会收到一个错误:“未经授权”。如果我删除基本身份验证,它可以正常工作。

如果只有我自己的服务器具有此身份验证,有人知道为什么我在公共(public)资源上未被授权吗?

例如(伪代码):

通过快速基本身份验证,我从 google.com 获得“未经授权”作为正文。没有授权,我得到 html

    var auth = express.basicAuth(function(user, pass, callback) {
var result = (user === 'john' && pass === 'doe') ? true : false;
callback(null, result);
});

app.configure(function(){
app.use("/", auth, function(next) { next(); });
app.use("/", express.static(__dirname+'/html'));
});

http.get('http://google.com', function(res) {

res.setEncoding('utf8');
var body = '';

res.on('data', function (chunk) {
body = body + chunk;
});

res.on('end', function() {
cb(body);
});

}).on('error', function(err) {
cb('error', err);
});

最佳答案

您需要重组您的应用,以便在向您的服务器发出 GET 后,在回调中完成对 Google 的调用。这是工作代码:

var express = require('express');
var request = require('request');
var app = express();

// Authenticator
app.use(express.basicAuth('john', 'doe'));

app.get('/', function(req, res) {
request.get('http://www.google.com', function (err, response, body) {
res.send(body)
});
});

app.listen(process.env.PORT || 8080);

如果您想进行更高级的基本身份验证,这里有详细信息:http://blog.modulus.io/nodejs-and-express-basic-authentication

看来您正在尝试同步编写代码,但这是行不通的。我建议阅读这篇文章以回顾惯用的 Node :http://blog.ponyfoo.com/2013/07/12/teach-yourself-nodejs-in-10-steps

关于node.js - 使用 http 基本身份验证从应用程序获取请求 (node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com