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

问题描述 投票:0回答:2

如何从请求对象中获取引用者?变量

this.request.headers['referer']
为空。

javascript node.js http-headers koa
2个回答
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' }

2
投票

对于较新的 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 添加表明它有效 和一个示例存储库来尝试

© www.soinside.com 2019 - 2024. All rights reserved.