当 API 需要证书和用户/密码时,如何从 HTML 页面(使用链接到 javascript 代码的按钮)运行对 API 的发布请求?

Posted

技术标签:

【中文标题】当 API 需要证书和用户/密码时,如何从 HTML 页面(使用链接到 javascript 代码的按钮)运行对 API 的发布请求?【英文标题】:How to run a post request to an API from an HTML page (using a button linked to javascript code) when the API require certificate and user/password? 【发布时间】:2022-01-22 22:08:03 【问题描述】:

我想在 html 页面中添加一些 javascript 代码,以允许任何有权访问该网页的用户将可用的发布请求运行到 API。这些 post 请求在 Postman 中运行良好,但我不确定如何使用 javascript 运行此类请求,因为此 API 不仅需要证书(带有密码),还需要 Postman 中的附加凭证对(用户名和密码)在适当的菜单上以非常直观的方式进行配置。

有人能告诉我如何使用 javascript 从网页运行这些请求吗?也许分享一些示例代码?

提前致谢!

【问题讨论】:

凭据不是问题,只要用户知道它们并且能够在发送请求时提交它们。问题是证书... HTTP 请求是由浏览器发送的,因此浏览器必须能够获取证书并且必须知道密码 - 显然是一个安全问题。自发并根据给定的信息,我绝对会建议不要仅使用前端解决方案!但请向我们展示 Postman 配置和更多 API 信息。 “也许可以分享一些示例代码?” - 根据您的实际要求创建多种不同语言的代码,这是 Postman 已经内置的功能... 不知道这个!谢谢!我已经在尝试了:D 【参考方案1】:

您可以使用 fetchaxios 来处理带有 js 的请求

以及使用链接到 javascript 代码的按钮: 你可以使用onclick

我从您的问题以及您可以问我的任何其他问题中都知道这一点

【讨论】:

我使用 Postman 功能创建了我的请求的代码(javascript 提取),我得到了以下结果: var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", "Basic 123xpto321"); var raw = JSON.stringify( "path": "/Customers/Organisation/organisation_adm/Account Management/Account Balance/Accounts", "outputType": "pdf" ); var requestOptions = method: 'POST', headers: myHeaders, body: raw, redirect: 'follow' ; fetch("https://api.url/my-endpoint", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); 现在,使用上面的代码,我不确定证书部分是如何处理的,我不确定如何获得请求的结果。代码的结果是错误信息:net::ERR_BAD_SSL_CLIENT_AUTH_CERT

以上是关于当 API 需要证书和用户/密码时,如何从 HTML 页面(使用链接到 javascript 代码的按钮)运行对 API 的发布请求?的主要内容,如果未能解决你的问题,请参考以下文章

从 vertx 中的客户端证书中提取用户主体

如何保证用户登陆时提交密码已经加密

PHP会员找回密码功能的简单实现

gitlab 为啥经常要输入用户名密码

Angular:如何通过 API 调用使用 JWT 身份验证

颤振:如何在登录表单中自动填写密码