如果在处理请求期间设置了全局变量,是否可以将该信息泄漏到后续请求中?
也就是说,全局变量是在every请求上设置的,并且因为nodejs是单线程的,所以我think我很安全,但是我想在这里提高信心。
这是我的上下文:我正在构建一个进行服务器端渲染的前端服务(Typescript + React),我想按请求配置应用程序。
为此,我正在使用这种技术:
conf.ts
:
let CONFIG: any
export function setGlobal (state: any): void {
CONFIG = state
}
export function getGlobal(): any {
return CONFIG
}
[server.tsx
-配置Express应用的位置:
const app = express()
app.get("/*", htmlEndpoint)
function htmlEndpoint (req: express.Request, res: express.Response): void {
const foo = req.headers["x-foo"] as string || ""
setGlobal({ foo })
const context = {}
const markup = renderToString(
<StaticRouter location={req.url}>
<App/>
</StaticRouter>,
)
<... respond with HTML, just boring boilerplate code ...>
}
现在在React渲染树的深处,组件可以做到这一点:
export function MyComponent() {
console.log(getGlobal().foo)
}
从技术上讲,我的问题范围很狭窄:通过在每个请求上调用setGlobal
,我是否冒着将该全局内容泄漏到其他请求中的真实风险?
但是更广泛地说,我也欢迎关于设计的反馈。我不喜欢全局变量,但是还没有找到其他解决方案,但是我也认识到,我不是我所选择的任何技术的专家,所以也许您可以帮助我开拓替代方案。很高兴听到您的想法。
如果我在处理请求期间设置了全局变量,是否可以将该信息泄漏到后续请求中?也就是说,在每个请求上都设置了全局变量,并且因为nodejs是single -...