Javascript 带有文本URL的XHR请求

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。在实际请求中。所以我不能查询我

我试图请求一个有点错误的API,它要求对一些字符进行URL编码(在我的例子中,是点导致了这个问题)

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
按原样发送到服务器:/