在模板中访问请求的 URL 参数
Access request's URL parameters in stencil
我可以在模板中访问请求的查询参数吗?
所以如果你去 http://example.com/?name=Bob
我可以渲染类似的东西吗:
Hello {{url.name}}!
它必须是服务器端呈现,而不是浏览器 JavaScript。
为什么? 其实我想在 Facebook 上分享测验的结果,所以 og:image
标签需要指向一张分数的图片。所以我分享了一个 link 就像 http://example.com/quiz/?quizScore=encodedscoreresult 然后页面包含:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?quizScore=encodedscoreresult" />
不是完整的解决方案,因为您无法访问单个参数的值,但是...
settings.facebook_like_button.href
确实包含请求 URL,URL 编码为 https%3A%2F%2Fexample.com%2Fquiz%3FquizScore%3Dencodedscoreresult
您可以使用以下方法从 URL 中提取 整个 查询字符串:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage{{get "search" (getObject "search" (urlParse (decodeURI settings.facebook_like_button.href)))}}" />
但是,这将包括所有查询参数,因此将额外的参数从您的模板站点传递到不需要的 api 可能存在安全风险。
更简单(也许更安全),您可以将整个 URL 作为参数传递到元标记中,然后 API 将对其进行解码:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?url={{settings.facebook_like_button.href}}" />
这导致:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?url=https%3A%2F%2Fexample.com%2Fquiz%3FquizScore%3Dencodedscoreresult" />
因为查询字符串中只有一个参数,所以您可以确定没有向目标传递任何不需要的内容 URL。
如果您只需要解码后的 URL,您可以使用:
{{assignVar "requestUrl" (decodeURI settings.facebook_like_button.href) }}
{{getVar "requestUrl"}}
我可以在模板中访问请求的查询参数吗? 所以如果你去 http://example.com/?name=Bob 我可以渲染类似的东西吗:
Hello {{url.name}}!
它必须是服务器端呈现,而不是浏览器 JavaScript。
为什么? 其实我想在 Facebook 上分享测验的结果,所以 og:image
标签需要指向一张分数的图片。所以我分享了一个 link 就像 http://example.com/quiz/?quizScore=encodedscoreresult 然后页面包含:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?quizScore=encodedscoreresult" />
不是完整的解决方案,因为您无法访问单个参数的值,但是...
settings.facebook_like_button.href
确实包含请求 URL,URL 编码为 https%3A%2F%2Fexample.com%2Fquiz%3FquizScore%3Dencodedscoreresult
您可以使用以下方法从 URL 中提取 整个 查询字符串:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage{{get "search" (getObject "search" (urlParse (decodeURI settings.facebook_like_button.href)))}}" />
但是,这将包括所有查询参数,因此将额外的参数从您的模板站点传递到不需要的 api 可能存在安全风险。
更简单(也许更安全),您可以将整个 URL 作为参数传递到元标记中,然后 API 将对其进行解码:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?url={{settings.facebook_like_button.href}}" />
这导致:
<meta property="og:image"
content="https://myapi.example.com/quizresultsimage?url=https%3A%2F%2Fexample.com%2Fquiz%3FquizScore%3Dencodedscoreresult" />
因为查询字符串中只有一个参数,所以您可以确定没有向目标传递任何不需要的内容 URL。
如果您只需要解码后的 URL,您可以使用:
{{assignVar "requestUrl" (decodeURI settings.facebook_like_button.href) }}
{{getVar "requestUrl"}}