【发布时间】:2019-03-27 13:00:32
【问题描述】:
我想从 JavaScript 调用 REST API。
这是我尝试过的:
var mainURI = '<MyAPIURI>';
var mainURIEncoded = encodeURI(mainURI);
var mainRequest = new XMLHttpRequest()
mainRequest.open('GET', mainURIEncoded, true)
mainRequest.onload = function () {
var data = JSON.parse(this.response)
}
我得到这个错误:
未找到与请求 URI 'MyAPIURI(Cut off at '#')'匹配的 HTTP 资源
我的 URI 中有一个“#”符号,问题似乎是我的 mainURIEncoded 字符串在“#”处被截断。
任何帮助表示赞赏。
【问题讨论】:
-
encodeURI()不会改变#字符。 -
哈希没有发送到服务器。它只是一个客户端表示。
-
一般来说,你不应该
encodeURI()整个URL。您应该使用encodeURIComponent()对参数值进行编码。在您的情况下,假设您的 URL 是“myhost/api/action?action=#someParam”,则只有#someParam操作需要编码。显示您的实际网址,以便我们提供更多信息。 -
在 URI 语法中,
#标记应该不发送到服务器的片段的开始。它由浏览器处理。如果您希望#成为发送到服务器的内容的一部分,则必须使用encodeURIComponent()逐段编码 URI。
标签: javascript rest api