我的SvelteKit应用程序中有两个环境变量,一个是公共API,一个是内部API (通过IP直接访问API以绕过Cloudflare等等)。
这就是我大致想要的:
API_URL = runningInBrowser ? "https://example.com/api" : "https://101.101.101.101/api"如何安全地放置两个环境变量,并确保内部API不公开在客户端/来自SvelteKit的服务器端呈现程序?我找不到明确的方法在Vite的医生上做这件事。
我计划做的是检查代码是否运行在服务器端,如果代码运行在服务器端,则使用dotenv和process.env访问服务器端env变量,否则使用Vite的env变量。这个方法安全吗?
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发布于 2022-11-06 09:57:17
我知道现在有点晚了,但是有一种管理环境变量的新方法。
有四种类型:
private变量仅用于服务器端代码,而public则用于客户端代码。
static变量在构建时使用,而dynamic变量则用于动态使用。
它们可以像
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
https://stackoverflow.com/questions/71805344
复制相似问题