javascript - 从客户端传递referer并在node.js中获取headers.referer

标签 javascript node.js express

我有几个网站,我想检查哪个网站调用我的 api,我在 node.js 中执行此操作

  const mySite = req.headers && req.headers.referer.split('/')[2]

在正常情况下,我会得到 mysite1.com、myothersite.net,但是上面的代码“安全”吗?在什么情况下标题不存在?如果我从 POSTMAN 调用并且不添加 header 会导致上述代码出现任何问题吗?

最佳答案

I know it's not secure, at least it did something. My concern will above code crash my server if referer is not present.

是的,它会崩溃。在您的代码中,如果未发送Referer,您将收到此错误

TypeError: Cannot read property 'split' of undefined

由于您使用的是 express ,因此可以使用req.header() ,使您的代码更短更安全:

const mySite = (req.header('Referer') || '').split('/')[2];
                 //  ^^^ case insensitive header check

我使用了req.header('Referer') || '' 以确保我们始终获得一个字符串,即使未设置 header ,因此 .split 是安全的。

除了不区分大小写之外,使用 req.header() 的好处是,Referrer 和 Referer 字段可互换

关于javascript - 从客户端传递referer并在node.js中获取headers.referer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520355/

相关文章:

javascript - 如何在 UIWebView 中从 Javascript 调用 Objective-C 方法?

javascript - 将自定义属性添加到 Express 应用程序和请求。最好的方法是什么?

node.js - JWT 存储在哪里

javascript - 如何使用嵌套promise调用函数并获取值

node.js - 如何使用 Typescript Express 应用程序渲染 Lit Element Web 组件?

javascript - Promise 中的 Testcafe Runner

javascript - 发票未打印在右侧

node.js - 帖子参数无法从 postman + Node js获取

node.js - Node 中 Mongoose 模式引用的问题

javascript - scrolltop 在 centos 上不起作用