You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何给Authorization头赋值Bearer Token请求Canvas API

JavaScript调用Canvas API的实现方案

以下给出两种常见的实现方式,均可实现和你提供的curl命令完全一致的请求效果:


1. 原生Fetch API实现(无需额外依赖)

适合所有JS运行环境,不需要引入第三方库,是最通用的实现方案:

// 替换为你自己的实际访问令牌
const ACCESS_TOKEN = "<ACCESS-TOKEN>";
const API_URL = "https://canvas.instructure.com/api/v1/courses";

fetch(API_URL, {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${ACCESS_TOKEN}`
  }
})
.then(response => {
  // 校验请求是否成功
  if (!response.ok) {
    throw new Error(`请求异常,状态码:${response.status}`);
  }
  // 解析返回的JSON数据
  return response.json();
})
.then(data => {
  // 此处处理拿到的课程数据
  console.log("获取到的课程数据:", data);
})
.catch(error => {
  // 处理请求异常
  console.error("请求失败:", error);
});

如果你更习惯async/await的同步写法,可以用以下版本:

async function getCanvasCourses() {
  const ACCESS_TOKEN = "<ACCESS-TOKEN>";
  const API_URL = "https://canvas.instructure.com/api/v1/courses";
  
  try {
    const response = await fetch(API_URL, {
      method: "GET",
      headers: {
        "Authorization": `Bearer ${ACCESS_TOKEN}`
      }
    });
    if (!response.ok) {
      throw new Error(`请求异常,状态码:${response.status}`);
    }
    const data = await response.json();
    console.log("获取到的课程数据:", data);
    return data;
  } catch (error) {
    console.error("请求失败:", error);
  }
}

// 调用函数即可发起请求
getCanvasCourses();

2. Axios库实现(适合已有Axios依赖的项目)

如果你的项目已经引入了Axios库,可以用更简洁的写法:
首先如果还没安装Axios,Node.js环境执行npm install axios安装,前端环境可以直接引入对应CDN资源。

const axios = require('axios');
// 前端ES模块环境可以替换为 import axios from 'axios'

// 替换为你自己的实际访问令牌
const ACCESS_TOKEN = "<ACCESS-TOKEN>";
const API_URL = "https://canvas.instructure.com/api/v1/courses";

axios.get(API_URL, {
  headers: {
    "Authorization": `Bearer ${ACCESS_TOKEN}`
  }
})
.then(response => {
  console.log("获取到的课程数据:", response.data);
})
.catch(error => {
  console.error("请求失败:", error.response?.data || error.message);
});

注意事项:

  • 不要把Access Token硬编码在前端公开可访问的代码中,会存在令牌泄露的安全风险,如果是前端应用建议把请求逻辑放到后端服务层转发,避免令牌直接暴露给用户。
  • 如果在浏览器端直接调用出现跨域错误,需要到Canvas的管理后台将你当前站点的域名添加到CORS白名单中。

内容的提问来源于stack exchange,提问作者Ryan M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:54:03