首页 > 解决方案 > 在 Yii2 中从 $request 获取主题标签

问题描述

我需要从 GET 请求中获取主题标签,如下所示: /v1/search/search#tag?query=word 或者/v1/search/search?query=word#tag 我尝试获取查询字符串: Yii::$app->request->getQueryString() 但在第一种情况下,它完全忽略查询参数,而在第二种情况下,它找到查询参数,但忽略主题标签。有什么方法可以从请求中获取主题标签吗?

标签: requestyii2hashtag

解决方案


您无法(直接)在服务器上获取 URI 片段值(标签)。

这不是Yii限制,url 的锚点#部分是在客户端使用的,它不会发送到服务器。

根据URI 片段的维基百科页面

片段取决于文档 MIME 类型并由客户端(Web 浏览器)评估。

客户端在检索文档时不应该向服务器发送 URI 片段,并且如果没有本地应用程序的帮助(见下文),片段不会参与 HTTP 重定向。

您可以通过查看网络流量、服务器日志、Yii调试器日志或浏览器控制台自行检查,例如,如果您尝试浏览https://example.com/user/123#1234服务器,则只会得到https://example.com/user/123.

您可以在发送请求之前绕过此限制,将值转换为参数。

// you could update
https://example.com/user/123#1234
// to
https://example.com/user/123?tag=1234

推荐阅读