1466980
如题,小弟打算用 superagent 模拟登陆,但是在用了 yield 之后一直报错/(ㄒoㄒ)/;
因为要登录的网站有多次重定向,之间需要获取 sessionid 进行身份验证,所以必须设置 redirects(0)。
相关代码:
var getCASTGC = yield request.post('https://cas.xjtu.edu.cn/login?service=http://ssfw.xjtu.edu.cn/index.portal')
.redirects(0)
.set('Cookie', JSESSIONID)
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({
username: username,
password: password
})
但是只要设置了就会报错,报错如下。
Error: Found
at Request.callback (D:\Practice\node_modules\superagent\lib\node\index.js:603:17)
at IncomingMessage.<anonymous> (D:\Practice\node_modules\superagent\lib\node\index.js:818:12)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:926:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
实在不知道怎么解决,百度谷歌都没有相关的介绍。。难道是我的打开方式不对 Orz 求大神指点!不胜感激!
----------------------------------------------------------------------2016-5-21 00:49:02 更新----------------------------------------------------------------------
感觉只要是有重定向而设置了 redirects(0) 的话就会报错,比如这样:
4000端口的服务器设置重定向
var app = require('express')();
app.get('/', function (req, res, next) {
res.redirect('/haha');
});
app.get('/haha', function (req, res, next) {
res.send('hello world')
})
app.listen(4000, console.log('4000 port'));
3000端口的设置为在访问时用 superagent 请求 4000 端口
var app = require('koa')();
var request = require('superagent');
app.use(function*(next) {
var res = yield request
.get('http://localhost:4000')
.redirects(0) // 这一步加上的话就会报错,不加的话会自动跟随重定向
console.log(res.text)
this.body = res.text;
})
app.listen(3000, console.log('3000 port'));
只要中间加了 redirects(0) 就会报错。。不知道为什么。。而且函数会被执行两次 /(ㄒoㄒ)/