Javascript 带有文本URL的XHR请求
我试图请求一个有点错误的API,它要求对一些字符进行URL编码(在我的例子中,是点导致了这个问题)Javascript 带有文本URL的XHR请求,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我试图请求一个有点错误的API,它要求对一些字符进行URL编码(在我的例子中,是点导致了这个问题) GET/projects/:projectid/merge\u请求 当project_id为groupname/project.name时,API需要URL编码(包括点),否则它会以404响应 正确的URL是/projects/groupname%2project%2Ename/merge\u请求 我目前正在手动进行替换,但浏览器似乎认为我不知道我在用什么替换%2E。在实际请求中。所以我不能查询我
GET/projects/:projectid/merge\u请求
当project_id为groupname/project.name
时,API需要URL编码(包括点),否则它会以404响应
正确的URL是/projects/groupname%2project%2Ename/merge\u请求
我目前正在手动进行替换,但浏览器似乎认为我不知道我在用什么替换%2E。在实际请求中。所以我不能查询我的API
当前代码如下所示:
var projectid = 'foo/bar.baz';
projectid = encodeURIComponent(projectid).replace(/[.]/g, '%2E');
var url = 'http://gitlab.local/api/v3/projects/' + projectid + '/merge_requests'
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.responseType = 'json';
xhr.addEventListener('load', mycallback);
xhr.send();
// -> GET http://gitlab.local/api/v3/projects/foo%2Fbar.baz/merge_requests 404 ()
有没有办法强制URL按字面意思发送,而不是由浏览器转换
(我在Chrome和Firefox中有相同的行为)用
%252E
代替%2E
%2E
是
的转义码,因此它将把它解释为句点。您需要的是转义%
,这就是%25
所做的。取消扫描时,%252E
变为%2E
不幸的是,%252E
按原样发送到服务器:/