如何在nodejs中使用koa获取“HTTP_REFERER”?

时间:2016-03-21 09:53:31

标签: javascript node.js koa

如何从请求对象中获取引荐来源?变量this.request.headers['referer']为空。

2 个答案:

答案 0 :(得分:5)

如果您的网页被其他网页引荐,则可以通过this.headers.referer访问该引荐网。

如果页面未被其他页面引用(直接加载),则this.headers.referer将不确定。

此演示代码:

'use strict'
const Koa = require('koa')
let app = new Koa()
app.use(function * () {
  console.log(this.headers)
})

app.listen(8888)

当被另一页引用时产生了这个:

{ host: 'localhost:8888',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'accept-language': 'en-US,en;q=0.5',
  'accept-encoding': 'gzip, deflate',
  referer: 'http://localhost:1111/',
  connection: 'keep-alive' }

这是直接加载的:

{ host: 'localhost:8888',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'accept-language': 'en-US,en;q=0.5',
  'accept-encoding': 'gzip, deflate',
  connection: 'keep-alive' }

答案 1 :(得分:1)

对于较新的koa版本 - 我目前使用2.5.1 - 由于生成器函数*()而生成警告,因此这是ES6语法的新示例

const Koa = require('koa')
const app = new Koa()
app
   .use(async (ctx) => console.log(ctx.request.headers))

app.listen(8888)

输出应与@JoshWillik描述的相同,但警告

除外

编辑:

gif add表明它有效enter image description heresample repository 尝试