Origin là gì
Thuộc phần REST API trong hành trình Node.js của Coddy. Bài học 18 trên 25.
Trình duyệt thường cho phép JavaScript của một trang đọc phản hồi API từ cùng origin. Quy tắc cùng origin này ngăn trang tùy ý đọc dữ liệu của trang web khác. CORS, viết tắt của Chia sẻ tài nguyên khác origin, cho phép máy chủ cấp quyền cho origin khác bằng các header phản hồi.
Trang trong trình duyệt có một origin, gồm scheme, host và port. Các đường dẫn khác nhau trên cùng origin có thể dùng chung API mà không cần quyền CORS. Host, scheme hoặc port thay đổi sẽ tạo ra origin khác.
new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// cùng nguồn gốcURL là lớp có sẵn, dùng để đọc một địa chỉ thành các phần có tên. Thuộc tính origin không bao gồm đường dẫn và truy vấn. Địa chỉ trang được cung cấp đã cố định trong phần khởi đầu. Bài luyện tập này so sánh các origin; bước tiếp theo sẽ cho phép máy chủ cấp quyền giữa chúng.
Header Origin của yêu cầu đã chứa giá trị origin này; bài học tiếp theo sẽ đọc header đó.
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 exercise.js.
Trả về {"same":true} khi địa chỉ được cung cấp có cùng nguồn gốc (origin) với trang, nếu không thì trả về false. Gửi {"address":"https://board.example.com/api/tasks"} bằng POST đến /result sẽ cho kết quả true. Thay https bằng http, đổi máy chủ hoặc cổng sẽ cho kết quả false. Các địa chỉ trong bài tập này đều là URL tuyệt đối hợp lệ.
Lệnh GET /result ban đầu dùng ví dụ được cung cấp {"address": "https://board.example.com/api/tasks"}. Dùng POST /result với phần thân JSON để thử các đầu vào khác.
Tự làm thử
const page = 'https://board.example.com/tasks';
export function exercise({ address }) {
return { same: address === page };
}
Tất cả bài học trong REST API
1Tài nguyên và động từ
Tài nguyên và URLTạo tài nguyên bằng POST4Trình duyệt, phiên bản và cấu hình
Origin là gìCho phép một origin khácCORSTrang gọi APITự luyện tập: Playground Express