首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vite安全地访问SveletKit上的服务器端环境变量

使用Vite安全地访问SveletKit上的服务器端环境变量
EN

Stack Overflow用户
提问于 2022-04-09 04:55:38
回答 1查看 401关注 0票数 2

我的SvelteKit应用程序中有两个环境变量,一个是公共API,一个是内部API (通过IP直接访问API以绕过Cloudflare等等)。

这就是我大致想要的:

代码语言:javascript
复制
API_URL = runningInBrowser ? "https://example.com/api" : "https://101.101.101.101/api"

如何安全地放置两个环境变量,并确保内部API不公开在客户端/来自SvelteKit的服务器端呈现程序?我找不到明确的方法在Vite的医生上做这件事。

我计划做的是检查代码是否运行在服务器端,如果代码运行在服务器端,则使用dotenvprocess.env访问服务器端env变量,否则使用Vite的env变量。这个方法安全吗?

代码语言:javascript
复制
import { browser } from "$app/env";

if (!browser) dotenv.config(); // load .env if on server-side
const API_URL = browser ? 
    import.meta.env.VITE_API_URL : // access exposed environment variable by Vite
    process.env.API_BASe_URL // access server side variable
EN

回答 1

Stack Overflow用户

发布于 2022-11-06 09:57:17

我知道现在有点晚了,但是有一种管理环境变量的新方法。

有四种类型:

  • public
  • private
  • static
  • dynamic

private变量仅用于服务器端代码,而public则用于客户端代码。

static变量在构建时使用,而dynamic变量则用于动态使用。

它们可以像

代码语言:javascript
复制
import { env } from "$env/dynamic/public";
import { env } from "$env/static/public";
import { env } from "$env/dynamic/private";
import { env } from "$env/static/private";

请注意,private模块只能在服务器端访问。

有关更多信息,请参见https://kit.svelte.dev/docs/modules#$env-dynamic-private

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71805344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档