栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有锚点的链接的HttpClient出现400错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有锚点的链接的HttpClient出现400错误

正如@Greg Sansom所说,URL不应与锚点/片段一起发送。URL的片段部分与服务器无关。

这是HTTP
1.1规范相关部分的预期URL语法:

    http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

注意:

fragment
语法中没有任何内容。

如果确实发送

fragment
明文,将会发生什么事,具体取决于服务器实现。我希望您会看到各种各样的回复:

  • 一些服务器将静默剥离/忽略片段部分。(这是您期望发生的事情)。
  • 某些服务器可能将此视为请求错误,并以400响应。
  • 某些服务器可能会错误地将该片段视为路径或查询的一部分,并根据该片段使服务器变得“混乱”的方式给出404或其他响应。
  • 某些服务器可能实际上使片段具有特定含义。(这让我感到很愚蠢,但是你永远都不知道…)

IMO,最明智的解决方案是在实例化

HttpGet
对象之前将其从URL中剥离。

跟进

从URL字符串中删除片段的推荐方法是将其转换为

java.net.URL
or
java.net.URI
实例,提取相关组件,使用这些组件创建新的
java.net.URL
or
java.net.URI
实例(当然不包含片段),最后将其重新转换为String 。

但是,我认为,如果可以安全地假定您的URL都是有效的绝对HTTP或HTTPS URL,则以下内容也应适用。

    int pos = url.indexOf("#");    String strippedUrl = (pos >= 0) ? url.substring(0, pos) : url;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号