请求包含凭据的URL

Cpt*_*lle 6 api curl reactjs fetch-api

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

curl -XPOST -d "grant_type=password" -d "username=admin@admin.admin" \
    -d "password=admin" "web_app@localhost:8081/oauth/token"
Run Code Online (Sandbox Code Playgroud)

当我在终端中使用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"
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

TypeError:http:// web_app @ localhost:8081/oauth/token是具有嵌入凭据的URL.

抓取我做错了吗?

Wil*_*unn 9

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

var headers = new Headers();

headers.append('Authorization', 'Basic ' + btoa(username + ':' + password));
fetch('https://host.com', {headers: headers})
Run Code Online (Sandbox Code Playgroud)

btoa编码"用户:通过"以编码字符串的base64.您可以btoaMDN上找到功能可用性(简而言之:它适用于IE 10及更高版本).

  • 这是什么原因? (6认同)
  • @Arsinclair,这在nodejs中是正确的,但在浏览器中却不是 (2认同)