Azure Function App(Java)中如何获取URI片段标识符?
问题解答
操作是否有误?
没有操作错误,这是HTTP协议的标准行为。
原因说明
URI中的**Fragment(即#后的部分)**是客户端(浏览器/请求发起方)的本地标识,用于定位页面内的资源。根据HTTP规范,客户端在向服务器发送请求时,会自动剥离Fragment部分,不会将其传递到服务器端。因此你的Azure函数(服务器端)根本接收不到这部分内容,自然无法通过request.getUri()获取到。
解决建议
如果需要让服务器获取到原本在Fragment中的内容,可采用以下两种方案:
- 客户端转换为查询参数:在发送请求前,将#后的内容提取出来,作为查询参数添加到URL的?参数区。比如把原请求地址改为:
之后在函数中可以通过查询参数获取该值:http://localhost:7071/api/myTest?abc=1111&fragmentIdentifier=123String fragmentValue = request.getQueryParameters().get("fragmentIdentifier"); - 通过请求体传递(仅适用于POST请求):如果是POST请求,可将Fragment内容放入请求体中(比如封装为JSON格式),函数从请求体中读取对应数据:
Optional<String> requestBody = request.getBody(); // 解析requestBody获取fragment内容,具体解析逻辑根据请求体格式调整
内容的提问来源于stack exchange,提问作者Abe
相关产品推荐
相关产品推荐

