声明静态挂载
静态挂载包含三个部分:
具体语法取决于您使用的语言和生成的 SDK。以下语言无关的声明显示了挂载点包含的信息:
Content/ 目录下,并通过 $PLUGIN_ROOT 引用它:
挂载目录
挂载目录时,请使用以/ 结尾的 URL 前缀:
/ 开头。末尾的 / 表示该前缀匹配其下方的子树。
不带尾部斜杠的路径 /my-plugin/assets 不是同一个子树路径;
如果您需要重定向或在该路径上获取索引响应,请添加 HTTP 路由。
如果前缀不包含尾部斜杠,内核会将目录挂载规范化为子树前缀。
请显式使用尾部斜杠,以便读者和客户端能够清楚地了解映射关系。
挂载单个文件
提供单个文件时,请使用不带尾部斜杠/ 的精确 URL 路径:
/my-plugin/index.html/anything 的请求与此挂载不匹配。
尽管声明属性名为 directory,但它既可以接受目录,也可以接受单个文件。
不要在文件挂载点末尾添加斜杠 /。末尾的斜杠会告诉内核将源视为目录挂载点。
URL 路径规则
静态挂载点前缀遵循内核的路径模式规则:- 前缀必须是以
/开头的绝对路径; - 不带末尾斜杠
/的前缀匹配一个精确路径; - 以
/结尾的前缀匹配该路径的子树;并且 /*不是通配符,会被拒绝。
/ 被视为静态文件的子树,可以匹配所有绝对请求路径。除非插件旨在提供应用程序的通用静态内容,否则请避免声明根路径。
访问控制
内核在提供文件之前应用access 策略。
请求还必须满足为插件配置的插件级访问策略。
如果任一策略拒绝请求,则不会提供文件。
空的挂载策略不会绕过非空的插件级策略。
使用插件配置来限制插件拥有的所有资源,
并使用挂载策略来对单个静态资源进行更具体的限制。有关策略模型,请参阅访问控制。
冲突和匹配
静态挂载与插件 HTTP 路由和其他静态挂载共享应用程序的 URL 空间。 保持每个插件的前缀唯一。如果另一个插件已经拥有相同的静态前缀或冲突的HTTP 路由模式,内核将拒绝该挂载。 当多个挂载可以匹配一个请求时,匹配前缀最长的挂载优先。 当静态挂载与插件 HTTP 路由的匹配长度相同时,该挂载也优先。 选择特定的前缀以避免 URL 的意外所有权。打包检查清单
加载插件之前,请验证:- 每个挂载的文件或目录都位于包的
Content/树中; directory值使用$PLUGIN_ROOT而不是构建机器路径;- 目录前缀以
/结尾; - 文件前缀不以
/结尾;并且 - 该软件包包含挂载点引用的所有文件。