6

我需要根据我们是在开发还是生产中设置不同的密钥。在没有固有运行时环境的客户端中执行此操作的好方法是什么?

谢谢!

4

4 回答 4

4

一种方法是将环境变量从服务器注入到客户端的全局命名空间中。

例如,如果您在 PHP 中执行此操作:

<script>
    var env = <?php echo $your_env_variable; ?>; // globally accessible variable
</script>

现在,您可以从在该脚本标记之后执行的任何 javascript 文件中访问该环境变量。

在节点中你会做同样的事情,但使用模板(例如 Jade):

script(type='text/javascript').
    var env = passedInEnvVar
于 2013-11-23T00:29:09.017 回答
1

在 nodejs 中,指定环境的“官方”方式是使用“NODE_ENV”。由于您没有提到您用于提供 HTML 内容的框架,因此我将使用 expressjs 作为我的答案。

您可以在视图模板中简单地执行此操作(我正在使用 EJS)

  var key = '<%= keys[process.env.NODE_ENV] %>'

您将需要准备一组与每个环境相对应的密钥

var keys = {
  'development': 'dev-key',
  'production': 'prod-key'
}
于 2013-11-23T00:49:43.757 回答
0

为什么不直接加载不同的脚本?您可以根据 GET 参数动态创建脚本,例如http://example.org/script.js?development=1,然后使用 PHP 等服务器端语言根据该参数更改代码内容。

您还可以在 Web 服务器上使用重写规则以使其看起来更干净。

于 2012-07-30T10:34:55.670 回答
0

页面头部的A<meta name='environment' content='<%= yourVariable %>' />非常适合(ejs 示例,但你明白了)。

此方法将帮助您保持更严格的 Content-Security-Policy (no inline-script),并且您无需在服务器中添加路由即可获得所需的值。

于 2021-09-30T06:46:00.743 回答