javascript - 如何在没有外部库的情况下在浏览器中发送带有标头的 GET 请求
问题描述
我的用例:如何在不使用浏览器的情况下从带有不记名授权的 API 获取数据request
?
例如:我可以使用request
模块在 Node.js 中执行以下操作:
var request = require('request');
var headers = {
'Accept': 'application/json',
'Authorization': 'Bearer bearer-token-uuid'
};
var options = {
url: 'https://api.data.umac.mo/service/facilities/access_control_records/v1.0.0/all',
headers: headers
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
如何在带有香草 JavaScript 且没有库的浏览器中执行此操作?
解决方案
注意:您永远不想将任何身份验证令牌硬编码到脚本本身中。您将从 oauth 调用中获取令牌并将其传递给您的请求。
如果您正在寻找一种在客户端执行此操作的方法(即在浏览器而不是节点中,则标准方法是使用fetch API。
例子:
const headers = {
'Accept': 'application/json',
'Authorization': 'Bearer 48267b68-d989-3610-9287-4943e8590eb0'
};
const url = 'https://api.data.umac.mo/service/facilities/access_control_records/v1.0.0/all';
window.fetch(url, { headers })
.then(response => response.json())
.then(body => {
console.log(body);
})
.catch(e => console.error(e));
请注意,根据您需要支持的浏览器,您可能需要polyfill fetch。
推荐阅读
- sql-server - 我正在编写一个 TSQL 过程并有一个提取数据的查询。但是它返回除以零错误异常
- javascript - 使用 .json() 时 readableStream 被锁定
- python - Apache Beam 错误:无法获取 GCS 的文件系统
- database - 处理数据库中“短暂”状态的惯用方式是什么?
- ios - GEOSwift with Google Maps iOS SDK (Draw a polygon)
- ruby-on-rails - 如何使连接表中的列在 Ransack 属性字段中可用?
- android - allowBackup="true" 卸载后不保存数据
- css - :not(_)中下划线的含义
- c++ - 为什么程序返回“签名无效?”
- matlab - 符号函数的索引