CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài blog CFSDN này giới thiệu phương pháp thiết lập cross-domain cho các yêu cầu phức tạp trong ASP.NET WebAPI2, được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.
Cài đặt tên miền chéo của ASP.Net Core tương đối đơn giản và đã được tích hợp chính thức. Vui lòng tham khảo các tài liệu chính thức của Microsoft để biết chi tiết:
https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-3.1#ecors 。
Điều kiện tên miền chéo.
Tên miền chéo đề cập đến các yêu cầu http được bắt đầu khi tài nguyên hiện tại truy cập vào các tài nguyên khác. Vì lý do bảo mật (do chính sách cùng nguồn gốc, miễn là có tên miền, giao thức và cổng khác nhau thì đó không phải là cùng một nguồn. ), trình duyệt hạn chế quyền truy cập thông thường của các yêu cầu này, đặc biệt Lưu ý rằng điều này xảy ra trong trình duyệt.
Giải pháp.
Phương pháp 1. Thêm cấu hình sau vào nút system.webServer trong tệp web.config
?
1
2
3
4
5
6
7
8
9
|
|
"Kiểm soát truy cập-Cho phép-Phương pháp"
giá trị=
"TÙY CHỌN, ĐĂNG, NHẬN"
/>
|
"Kiểm soát truy cập-Cho phép-Tiêu đề"
giá trị=
"x-yêu cầu-với,kiểu-nội-dung"
/>
|
"Kiểm soát truy cập-Cho phép-Nguồn gốc"
giá trị=
"*"
/>
|
Phương pháp 2. Gói Nuget tham chiếu Microsoft.AspNet.Cors, sau đó thêm thuộc tính [EnableCors(origins: "*", headers: "*", Method: "*")] trên bộ điều khiển.
Hãy chú ý đến hai phương pháp trên và không đặt chúng nhiều lần. Nếu bạn đặt chúng hai lần, sẽ báo lỗi 'Tiêu đề Access-Control-Allow-Origin' chứa nhiều giá trị '*, *',.
Các vấn đề yêu cầu phức tạp.
Hai phương pháp trên chỉ hiệu quả đối với các yêu cầu tên miền chéo đơn giản và không thể xử lý các yêu cầu tên miền chéo phức tạp.
Yêu cầu đơn giản: Phương thức yêu cầu là GET/HEAD/POST và loại nội dung là text/plain, application/x-www-form-urlencoded, multipart/form-data.
Những yêu cầu không đáp ứng các điều kiện trên được coi là yêu cầu phức tạp Trong quá trình phát triển, chúng tôi thường kích hoạt điều kiện này chủ yếu là do loại nội dung của yêu cầu của chúng tôi được đặt thành application/json.
Lưu ý: Nếu một yêu cầu đơn giản được đặt với tiêu đề Xác thực, yêu cầu đó sẽ được "nâng cấp" thành yêu cầu phức tạp.
Các yêu cầu phức tạp sẽ thêm yêu cầu truy vấn HTTP trước khi liên lạc chính thức, được gọi là yêu cầu "preflight". Trước tiên, trình duyệt sẽ hỏi máy chủ xem tên miền của trang web hiện tại có nằm trong danh sách cấp phép của máy chủ hay không và có thể sử dụng các trường thông tin tiêu đề và động từ HTTP nào. Chỉ khi nhận được phản hồi tích cực, trình duyệt mới đưa ra yêu cầu XMLHttpRequest chính thức, nếu không nó sẽ báo lỗi và lần này phương thức preflight Http là Tùy chọn. Nói cách khác, nếu yêu cầu xhr của bạn được đưa ra trước khi yêu cầu Tùy chọn được đưa ra, điều đó có nghĩa là yêu cầu bạn muốn thực hiện là một yêu cầu phức tạp.
Xử lý yêu cầu phức tạp.
Trong tệp Global.asax, xử lý nó thông qua phương thức Application_BeginRequest:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
được bảo vệ
ghi đè
vô hiệu
Ứng dụng_Bắt_đầuYêu_cầu(
sự vật
người gửi, EventArgs e)
{
Phản hồi.Tiêu đề.Thêm(
"Kiểm soát truy cập-Cho phép-Nguồn gốc"
,”*“);
nếu như
(Yêu cầu.Tiêu đề.Tất cả các khóa.Chứa(
"Nguồn gốc"
) && Yêu cầu.HttpMethod ==
"TÙY CHỌN"
)
{
Phản hồi.Tiêu đề.Thêm(
"Kiểm soát truy cập-Cho phép-Tiêu đề"
,
"*"
);
Phản hồi.Tiêu đề.Thêm(
"Kiểm soát truy cập-Cho phép-Phương pháp"
,
"*"
);
Phản hồi.Flush();
Phản hồi.Kết thúc();
}
căn cứ
.Application_BeginRequest(người gửi, e);
}
|
Bằng cách này, yêu cầu tên miền chéo Tùy chọn được phản hồi bằng "được hỗ trợ tên miền chéo" và các yêu cầu chính thức tiếp theo sẽ đến Hành động trong bộ điều khiển và quá trình xử lý truy cập tên miền chéo tương ứng được thực hiện. Sau đó, toàn bộ yêu cầu tên miền chéo phức tạp sẽ được triển khai.
Tài liệu tham khảo chính thức của Microsoft: https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api.
Tóm tắt.
Điều này kết thúc bài viết này về cài đặt tên miền chéo yêu cầu phức tạp ASP.NET WebAPI2. Để biết thêm thông tin về cài đặt tên miền chéo yêu cầu phức tạp ASP.NET WebAPI2, vui lòng tìm kiếm các bài viết trước của tôi hoặc tiếp tục duyệt các bài viết liên quan sau đây. hỗ trợ tôi nhiều hơn trong tương lai! .
Liên kết gốc: https://www.cnblogs.com/adingfirstlove/p/13372614.html.
Cuối cùng, bài viết này về phương pháp cài đặt tên miền chéo cho các yêu cầu phức tạp trong ASP.NET WebAPI2 kết thúc tại đây. Nếu bạn muốn biết thêm về phương pháp cài đặt tên miền chéo cho các yêu cầu phức tạp trong ASP.NET WebAPI2, vui lòng tìm kiếm CFSDN. Hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!