Menu
CoddyTech

允许其他源

本课属于 Coddy Node.js 学习旅程的“REST API”单元。第 19 课,共 25 课。

一个源上的页面需要获得权限,才能读取来自另一个源的 API 响应。浏览器会发送一个 Origin 请求头。API 可以通过 Access-Control-Allow-Origin 指定允许的源来响应。

if (req.get('origin') === 'https://shop.example.com') {
    res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}

浏览器会先检查这个响应头,然后才会将响应提供给页面。API 仍可能收到请求:CORS 不是登录检查。请求栏不会强制执行 CORS,但其中的 Headers 标签页可以让你检查浏览器会收到什么内容。

req.get('origin') 会读取请求的 Origin 请求头。请求头名称不区分大小写。

challenge icon

挑战

简单

这是一个小型练习项目。项目已提供设置,你只需编辑 server.js。

在提供的 GET 路由中,仅当 Origin 等于 https://board.example.com 时才设置 Allow-Origin。保留 JSON 响应。运行后,发送带有该 Origin 请求头的 GET /result 请求:响应头必须匹配。Origin 不同或缺失时,不会有 Allow-Origin 响应头。

在请求栏的 Headers 字段中,输入 Origin: https://board.example.com。检查响应头,查看权限设置。

亲手试试

import express from 'express';
const app = express();
app.get('/result', (req, res) => {
    res.json({ ok: true });
});
app.listen(3000);

REST API中的所有课

自己练习: Express 在线编辑器