Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从SvelteKit应用程序发送安全API请求,而不在客户端显示API密钥?_Javascript_Api_Svelte_Sveltekit_Supabase - Fatal编程技术网

Javascript 如何从SvelteKit应用程序发送安全API请求,而不在客户端显示API密钥?

Javascript 如何从SvelteKit应用程序发送安全API请求,而不在客户端显示API密钥?,javascript,api,svelte,sveltekit,supabase,Javascript,Api,Svelte,Sveltekit,Supabase,我正在使用Supabase开发一个新的Sveltekit应用程序 目前,我正在客户端上传递Supabase密钥,如下所示: const supabase = createClient( import.meta.env.VITE_SUPABASE_URL, import.meta.env.VITE_SUPABASE_ANON_KEY ) 我创建安全后端/API的最简单方法是什么,这样应用程序就可以从Supabase获取内容,而无需在客户端显示Supabase密钥 Sveltekit中是否

我正在使用Supabase开发一个新的Sveltekit应用程序

目前,我正在客户端上传递Supabase密钥,如下所示:

const supabase = createClient(
  import.meta.env.VITE_SUPABASE_URL,
  import.meta.env.VITE_SUPABASE_ANON_KEY
)
我创建安全后端/API的最简单方法是什么,这样应用程序就可以从Supabase获取内容,而无需在客户端显示Supabase密钥


Sveltekit中是否有任何内置功能使我能够做到这一点?或者我需要集成Rails这样的后端吗?

SvelteKit在两个主要位置支持服务器端代码:

浏览器永远无法访问这些代码;只有结果。此外,客户端将看不到任何网络调用,因为它们都发生在服务器上(在URL中嵌入API密钥的情况下)。每个API的
locals
属性是与所有服务器端部件共享敏感数据(如API密钥)的好地方

一般建议使用本地端点代理外部API调用:

  • 从获取本地SvelteKit端点(而不是直接调用外部API,如Supabase)。您可以从页面上的两个不同位置获取端点:
    • 中(允许在发送/呈现页面之前从服务器端调用API)
  • 在单例中初始化外部API
  • 从端点调用外部API并将结果返回到页面
  • 注:

    • SvelteKit端点是无服务器lambda函数的推广。(请参阅第页或第页)
    • 端点/挂钩中使用的任何NPM模块都必须是devdependency
    • 建议使用
      fetch()
      load()
      提供了一个特殊版本的
      fetch()
      ,它缓存来自服务器端的调用,以便客户端可以重用结果
    • 第2步主要是支持Netlify等无服务器环境