Cross-Origin Resource Sharing (CORS) là cơ chế sử dụng các HTTP header bổ sung để cho phép trình duyệt cấp quyền cho ứng dụng web chạy tại một origin (nguồn) truy cập tài nguyên từ origin khác. Ứng dụng web thực hiện cross-origin HTTP request khi nó request tài nguyên có origin khác (domain, protocol, hoặc port) so với origin của chính nó.
Ví dụ: ứng dụng có front-end (UI) và back-end (Service). Front-end phục vụ từ https://demodomain-ui.com và back-end từ https://demodomain-service.com/api. Khi user truy cập, vì lý do bảo mật, trình duyệt hạn chế cross-origin HTTP requests khởi tạo từ UI.
Để khắc phục, chuẩn CORS cần thiết vì nó cho phép server chỉ định không chỉ ai có thể truy cập tài sản, mà còn cách tài sản được truy cập. Cross-origin requests được thực hiện bằng các HTTP request methods chuẩn. Hầu hết server cho phép GET requests, nghĩa là cho phép tài nguyên từ origin bên ngoài đọc tài sản. Các HTTP request methods như PATCH, PUT, DELETE. Các HTTP header được thêm bởi chuẩn CORS:
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
- Access-Control-Allow-Headers
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
- Access-Control-Max-Age
- Access-Control-Request-Headers
- Access-Control-Request-Method
- Origin
Bật CORS ở cấp Global
Đầu tiên cài đặt Microsoft.AspNet.WebApi.Cors từ NuGet Package Manager.
Mở file App_Start/WebApiConfig.cs. Thêm code sau vào phương thức WebApiConfig.Register:

Bật CORS ở cấp Controller và Action
Có thể bật CORS ở cấp controller hoặc action method như sau:
Ví dụ
using System.Web.Http;
using System.Web.Http.Cors;
namespace DemoWebApplication.Controllers
{
[EnableCors("*", "*", "*")] // Cấp Controller
public class DemoController : ApiController
{
[EnableCors("*", "*", "*")] // Cấp Action
public IHttpActionResult Get(int id)
{
return Ok();
}
}
}
Tương tự, có thể tắt CORS bằng attribute [DisableCors].