【发布时间】:2021-11-09 09:36:48
【问题描述】:
我正在尝试使用 Node URL 和 URLSearchParams API 来简化 URL 构建。我正在使用它来构建这样的 URL:
https://<ye olde oauth host>/oauth/authorize?response_type=code&client_id=<my client id>&redirect_uri=https://localhost:4200&scopes=scope1%20scope2
但是,我下面的代码是这样创建 URL 的:
https://<ye olde oauth host>/oauth/authorize?response_type=code&client_id=<my client id>&redirect_uri=https%3A%2F%2Flocalhost%3A4200&scopes=scope1%20scope2
据我了解,URLSearchParams API 将对字符串进行百分比编码,但如果我不希望对它们进行编码,比如 URL,该怎么办?这是我的代码:
const loginURL = new URL('https://<ye olde oauth host>');
url.pathname = 'oauth/authorize';
url.search = new URLSearchParams({
response_type: 'code',
client_id: '<my client id>'
}).toString();
loginURL.searchParams.append('redirect_uri', redirectURI);
loginURL.searchParams.append('scopes', scopes);
我不希望对redirect_uri 进行百分比编码的原因是接收端的 OAuth API 不知道如何解析它。有没有办法使用 URLSearchParams 来阻止它编码?
【问题讨论】:
-
loginURL应该最终转换为字符串吧?如果您在发送之前获得该字符串并再次解码怎么办。 -
我希望如此,但我打电话给
loginURL.href,它以我上面显示的格式给出了 URL,当我调用window.location.href = loginURL.href时,它仍然有格式不正确的 URL :(
标签: javascript node.js angular typescript oauth