javascript - 使用包含凭据的 URL 进行请求

标签 javascript reactjs curl 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"

当我在终端中使用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"
    }

这是我得到的错误:

TypeError: http://web_app@localhost:8081/oauth/token is an url with embedded credentials.

我的抓取操作是否错误?

最佳答案

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

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

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

其中 btoa 将“user:pass”编码为 Base64 编码字符串。您可以在 MDN 上找到 btoa 功能可用性(简而言之:它适用于 IE 10 及更高版本)。

关于javascript - 使用包含凭据的 URL 进行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067331/

相关文章:

reactjs - 使用 react usecontext 测试 mobx react observer - React, Mobx

php - curl_close() : is not a valid cURL handle resource . .. 但为什么呢?

javascript - 使用 jquery 在 php cURL 中搜索

javascript - React 箭头函数产生不同的调试体验

php - 如何在 PHP 中将复杂对象数组发送到另一个页面?

javascript - 如何在一个函数中返回两个函数,该函数在 react 中呈现为两个组件,而不是第二个函数覆盖第一个函数

javascript - React.js 使用非状态变量时出现错误,因为组件正在更改要控制的文本类型的不受控制的输入

JavaScript bool 值作为值返回,而不是引用

Javascript 将 blob 转换为字符串并返回

javascript - React Router 子路由未显示