curl URL包含凭据的请求

brc7rcf0  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(167)

我正在尝试获取curl并从API获取JSON。

curl -XPOST -d "grant_type=password" -d "username=admin@admin.admin" \
    -d "password=admin" "web_app@localhost:8081/oauth/token"

当我在终端中使用curl时,一切都工作正常,但尝试使用fetch时,我会得到底部提到的错误消息。

fetch("http://web_app@localhost:8081/oauth/token", {
        credentials: 'include',
        body: "grant_type=password&username=admin@admin.admin&password=admin",
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
        },
        method: "POST"
    }

这是我得到的错误:
类型错误:http://web_app@localhost:8081/oauth/token是具有嵌入式凭据的URL。
是我捡错了吗?

kd3sttzy

kd3sttzy1#

您不能使用https://user:pass@host.com表单,您需要设置Authorization http Header:

var headers = new Headers({
    'Authorization': `Basic ${btoa(username + ':' + password)}`
});

fetch('https://host.com', {headers: headers})

其中,btoa将'user:pass'编码为base64编码字符串。您可以在MDN上找到btoa函数的可用性(简称:它在IE10及更高版本上工作)。

相关问题