Menu
CoddyTech

Cho phép một origin khác

Thuộc phần REST API trong hành trình Node.js của Coddy. Bài học 19 trên 25.

Một trang trên một origin cần được cấp quyền để đọc phản hồi API từ origin khác. Trình duyệt gửi một tiêu đề yêu cầu Origin. API có thể phản hồi bằng Access-Control-Allow-Origin, trong đó nêu origin được phép.

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

Trình duyệt kiểm tra tiêu đề phản hồi này trước khi cho trang truy cập phản hồi. API vẫn có thể nhận được yêu cầu: CORS không phải là bước kiểm tra đăng nhập. Thanh yêu cầu không thực thi CORS, nhưng thẻ Headers cho phép bạn kiểm tra những gì trình duyệt sẽ nhận được.

req.get('origin') đọc tiêu đề Origin của yêu cầu. Tên tiêu đề không phân biệt chữ hoa chữ thường.

challenge icon

Thử thách

Dễ

Đây là một dự án luyện tập nhỏ. Phần thiết lập đã có sẵn, bạn chỉ chỉnh sửa server.js.

Trong route GET được cung cấp, chỉ đặt Allow-Origin khi Origin bằng https://board.example.com. Giữ nguyên phản hồi JSON. Chạy, sau đó gửi GET /result với header Origin đó: header phản hồi phải khớp. Nếu Origin khác hoặc bị thiếu, không có header Allow-Origin.

Trong trường Headers của thanh yêu cầu, nhập Origin: https://board.example.com. Kiểm tra các header phản hồi để xem quyền.

Tự làm thử

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

Tất cả bài học trong REST API

Tự luyện tập: Playground Express