YARP Cross-Origin Requests (Yêu cầu Cross-Origin - CORS)
Giới thiệu
Reverse proxy (proxy ngược) có thể xử lý các yêu cầu cross-origin (yêu cầu từ nguồn gốc khác) trước khi chúng được proxy đến các máy chủ đích. Điều này giúp giảm tải cho các máy chủ đích và đảm bảo các chính sách nhất quán được áp dụng trên toàn bộ ứng dụng của bạn.
Mặc định
Các yêu cầu sẽ không được tự động khớp cho các yêu cầu preflight CORS trừ khi được bật trong cấu hình route (tuyến đường) hoặc ứng dụng.
Cấu hình
Các CORS policy (chính sách CORS) có thể được chỉ định cho từng route thông qua RouteConfig.CorsPolicy và có thể được liên kết từ phần Routes của file cấu hình. Cũng như các thuộc tính route khác, phần này có thể được sửa đổi và tải lại mà không cần khởi động lại proxy. Tên policy không phân biệt hoa/thường.
Ví dụ:
{
"ReverseProxy": {
"Routes": {
"route1" : {
"ClusterId": "cluster1",
"CorsPolicy": "customPolicy",
"Match": {
"Hosts": [ "localhost" ]
}
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"cluster1/destination1": {
"Address": "https://localhost:10001/"
}
}
}
}
}
}CORS policy là một khái niệm của ASP.NET Core mà proxy sử dụng. Proxy cung cấp cấu hình trên để chỉ định policy cho từng route, phần còn lại được xử lý bởi CORS Middleware sẵn có của ASP.NET Core.
Các CORS policy có thể được cấu hình trong ứng dụng như sau:
services.AddCors(options =>
{
options.AddPolicy("customPolicy", builder =>
{
builder.AllowAnyOrigin();
});
});Sau đó thêm CORS middleware:
app.UseCors(); app.MapReverseProxy();
DefaultPolicy (Chính sách mặc định)
Chỉ định giá trị default trong tham số CorsPolicy của route có nghĩa là route đó sẽ sử dụng policy được định nghĩa trong CorsOptions.DefaultPolicy.
Vô hiệu hóa CORS
Chỉ định giá trị disable trong tham số CorsPolicy của route có nghĩa là CORS middleware sẽ từ chối các yêu cầu CORS.