1. CORS là gì

CORS là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts, Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác với domain của trang đó. CORS là viết tắt của từ Cross-origin resource sharing.

Tại sao cần CORS

CORS được sinh ra là vì same-origin policy, là một chính sách liên quan đến bảo mật được cài đặt vào toàn bộ các trình duyệt hiện nay. Chính sách này ngăn chặn việc truy cập tài nguyên của các domain khác một cách vô tội vạ.

Xem thêm:

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
https://viblo.asia/p/tim-hieu-ve-cross-origin-resource-sharing-cors-Az45bGWqKxY
https://crashtest-security.com/multiple-values-access-control-allow-origin/#access-control-allow-origin-response-header-values

2. Cors có những cấu hình nào

Thường thì để cấu hình cors phải cấu hình trên sever và backend để cho phép ai được phép gọi lên sever. Có thể cấu hình như sau:

2.1 Chỉ định domain được phép khởi tạo kết nối

Access-Control-Allow-Origin: https://mozilla.org 
Vary: Origin

Cấu hình như trên cho phép domain được chỉ định tạo kết nối

2.2 Cho phép tất cả các domain được phép kết nối và trên backend viết code kiểm tra domain

Access-Control-Allow-Origin: *

Sau khi cấu hình như trên thì tất cả các domain đều được kết nối, cần thêm một bước kiểm tra domain khi được truy cập rồi trả phản hồi, nếu không nằm trong list được truy cập thì ko trả về dữ liệu.

2.3 Sử dụng proxy để gọi kết nối

Sử dụng một proxy là trung gian để gọi đến sever, lúc nào proxy nằm trong list domain được truy cập hoặc nó là domain sever thì sẽ không bị cors ảnh hưởng.

3. Cách cấu hình CORS sao cho đúng

Thường thì mình sẽ cấu hình theo từng bước sau:

  • Cấu hình trên webservices (nginx/apache)

Trên nginx: https://enable-cors.org/server_nginx.html

Trên apache: https://ubiq.co/tech-blog/enable-cors-apache-web-server/

  • Cấu hình trên backend

Câu hỏi

  1. Tại sao cors không cho phép cấu hình multi domain

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed

Xem thêm:

https://michielkalkman.com/snippets/nginx-cors-open-configuration/
https://topdev.vn/blog/cors-la-gi/

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *