Chia sẻ tài nguyên nhiều nguồn gốc (CORS) là một cơ chế sử dụng các tiêu đề HTTP bổ sung để yêu cầu các trình duyệt cung cấp cho một ứng dụng web đang chạy tại một nguồn, quyền truy cập vào các tài nguyên đã chọn từ một nguồn khác. Một ứng dụng web thực thi một yêu cầu HTTP có nguồn gốc chéo khi nó yêu cầu một tài nguyên có nguồn gốc (miền, giao thức hoặc cổng) khác với nguồn gốc của chính nó.
Ví dụ:chúng ta hãy xem xét một ứng dụng có giao diện người dùng (UI) và giao diện người dùng (Service). Giả sử giao diện người dùng được phân phát từ https://demodomain-ui.com và phần phụ trợ được phân phát từ https://demodomain-service.com/api. Nếu người dùng cuối cố gắng truy cập ứng dụng, vì lý do bảo mật, trình duyệt hạn chế các yêu cầu HTTP có nguồn gốc chéo được khởi tạo từ giao diện người dùng.
Vì vậy, để khắc phục điều này, tiêu chuẩn CORS là cần thiết vì nó cho phép máy chủ không chỉ xác định ai có thể truy cập nội dung của nó mà còn cả cách thức truy cập nội dung. Mostservers sẽ cho phép các yêu cầu GET, nghĩa là chúng sẽ cho phép các tài nguyên từ externalorigins (ví dụ, một trang web) đọc nội dung của chúng. HTTP yêu cầu các phương thức như PATCH, PUT hoặc DELETE. Sau đây là các tiêu đề HTTP được thêm bởi CORSstandard -
-
Access-Control-Allow-Origin
-
Truy cập-Kiểm soát-Cho phép-Thông tin đăng nhập
-
Access-Control-Allow-Headers
-
Truy cập-Kiểm soát-Cho phép-Phương thức
-
Access-Control-Expose-Headers
-
Access-Control-Max-Age
-
Access-Control-Request-Headers
-
Access-Control-Request-Method
-
Nguồn gốc
Bật CORS ở cấp độ toàn cầu -
Đầu tiên là cài đặt Microsoft.AspNet.WebApi.Cors từ trình quản lý gói Nuget.
Sau đó, mở tệp App_Start / WebApiConfig.cs. Thêm mã sau vào phương thứcWebApiConfig.Register -
Bật CORS ở cấp Bộ điều khiển và cấp độ Hành động -
Chúng tôi cũng có thể kích hoạt CORS ở cấp bộ điều khiển hoặc cấp phương pháp hành động như bên dưới.
Ví dụ
using System.Web.Http; using System.Web.Http.Cors; namespace DemoWebApplication.Controllers{ [EnableCors("*", "*", "*")] //Controller level public class DemoController : ApiController{ [EnableCors("*", "*", "*")] //Action level public IHttpActionResult Get(int id){ return Ok(); } } }
Tương tự, chúng tôi có thể vô hiệu hóa các cors bằng cách sử dụng thuộc tính [DisableCors].