使用express不回应特定的请求



我想提供一些基于正常浏览器GET请求的HTML。但我想回应什么都没有,(虽然域名甚至没有注册),如果用户代理请求头包含来自js变量myString的字符串。

我认为这意味着我的服务器不能以状态100响应。但这是如何做到的呢?

我只是尝试添加一个返回语句,这只是让请求挂起。我还尝试添加res.status(404).end()res.destroy(),但在浏览器中的结果是不同于没有响应。

如何不响应浏览器对特定用户代理的请求,但正常响应?

const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
const userAgent = req.headers['user-agent']
const myString = 'firefox'
if (userAgent.toLowerCase().includes(myString)) {
res.destroy()
return
}
res.setHeader("Content-Type", "text/html")
res.send('<html><body>hello</body></html>')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

我期望在浏览器中看不到任何可见的结果,好像域名没有注册。


我问这个问题的原因是我打算不响应iPhone的请求,考虑到iOS Safari浏览器在动态视口方面有很多问题,以及苹果糟糕的实现所带来的所有困难。


成功标准:在浏览器中的结果必须等于

的结果
if (userAgent.toLowerCase().includes(myString)) {
res.redirect('https:/www.some-unregistered-url.com')
}

但实际url保持不变。

如何返回一个空的HTML文档?

res.send('<html><body></body></html>')

你也可以试试

res.send('')

您还应该检查服务器端浏览器检测

服务器端浏览器检测?node . js

尝试如下:res.set("Connection","close";或

res.connection.destroy ();但是如果你真的不想让Firefox。你应该发送一个StatusCode 40x。错误请求400或403被禁止,带有类似的消息。客户端不允许。

最新更新