所以我看到几个月前有一个拉取请求让superagent允许你在请求中指定CA.似乎没有更新文档来反映这种变化,所以我似乎无法弄清楚如何去做。
我正在尝试在我的本地计算机上测试一个暴露http和https端点的REST服务。所有的http工作正常,SSL的工作......好吧.....不是那么多。
昨天花了一整天的时间来减少证书错误,我90%确定我的服务器正常运行。 Curl似乎这么认为,就像一个vanilla节点请求对象一样。
我认为superagent可能会在引擎盖下创建一个请求 - 我只需要知道如何传入CA.
提前致谢。
答案 0 :(得分:3)
他们的测试中有usage example。
基本上:
var https = require('https'),
fs = require('fs'),
key = fs.readFileSync(__dirname + 'key.pem'),
cert = fs.readFileSync(__dirname + 'cert.pem'),
assert = require('better-assert'),
express = require('express'),
app = express();
app.get('/', function(req, res) {
res.send('Safe and secure!');
});
var server = https.createServer({
key: key,
cert: cert
}, app);
server.listen(8443);
describe('request', function() {
it('should give a good response', function(done) {
request
.get('https://localhost:8443/')
.ca(cert)
.end(function(res) {
assert(res.ok);
assert('Safe and secure!' === res.text);
done();
});
});
});
答案 1 :(得分:0)
这对我有用:
...
var user = request.agent({ca: cert});
...
完整示例:
var expect = require('chai').expect;
var should = require('should');
var request= require('superagent');
var fs = require('fs');
var cert = fs.readFileSync('sslcert/server.crt', 'utf8');
var validUser = { username: 'test@test.com', password: 'secret111' };
describe('User', function() {
// provide certificate as agent parameter
var user = request.agent({ca: cert});
it("/login", function(done) {
user
.get('https://localhost:3000/login')
.end(function(err, res) {
if(err) throw err;
// HTTP status should be 200
res.status.should.equal(200);
user
.post('https://localhost:3000/login')
.send(validUser)
.end(function(err, res) {
if(err) throw err;
// HTTP status should be 200
res.status.should.equal(200);
done();
// user will manage its own cookies
// res.redirects contains an Array of redirects
});
});
});
it("/", function(done) {
user
.get('https://localhost:3000/')
.end(function(err, res) {
if(err) throw err;
// HTTP status should be 200
res.status.should.equal(200);
done();
});
});
it("/logout", function(done) {
user
.get('https://localhost:3000/logout')
.end(function(err, res) {
if(err) throw err;
// HTTP status should be 200
res.status.should.equal(200);
done();
});
});
});