在ASP.NET Core中啟用CORS跨域資源共享的方法
如何在 ASP.NET Core 中啟用 CORS
跨域資源共享 (CORS) 是一種允許 Web 應(yīng)用程序訪問來自不同域的資源的機(jī)制。默認(rèn)情況下,出于安全考慮,瀏覽器會(huì)阻止跨域 HTTP 請求。但是,您可以在 ASP.NET Core 應(yīng)用程序中啟用 CORS,以便在需要時(shí)允許此類請求。本文將指導(dǎo)您使用現(xiàn)代最小托管模型在 ASP.NET Core 應(yīng)用程序中逐步啟用 CORS。
為什么需要 CORS?
假設(shè)您有一個(gè)托管在 [此處應(yīng)填寫服務(wù)器地址] 的前端應(yīng)用程序,https://frontend.example.com它試圖訪問托管在 [此處應(yīng)填寫服務(wù)器地址] 的 API 。https://api.example.com如果未啟用 CORS,瀏覽器將阻止此請求,從而導(dǎo)致CORS 策略錯(cuò)誤。啟用 CORS 可以讓您指定哪些域可以安全地訪問您的 API。
步驟 1:添加 CORS 服務(wù)
第一步是將 CORS 服務(wù)添加到您的應(yīng)用程序中。
- 打開
Program.cs文件。 AddCors在服務(wù)配置部分注冊 CORS 服務(wù):
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddCors(options =>
{
? ? options.AddPolicy("AllowSpecificOrigins", builder =>
? ? {
? ? ? ? builder.WithOrigins("https://frontend.example.com") // Replace with your allowed origins
? ? ? ? ? ? ? ?.AllowAnyHeader()
? ? ? ? ? ? ? ?.AllowAnyMethod();
? ? });
});
builder.Services.AddControllers();
var app = builder.Build();
步驟 2:應(yīng)用 CORS 策略
您需要將 CORS 策略應(yīng)用到您的應(yīng)用程序。主要有兩種方法:全局應(yīng)用或針對特定端點(diǎn)應(yīng)用。
全球
要為所有控制器啟用該策略,請UseCors在請求管道配置中使用中間件:
app.UseCors("AllowSpecificOrigins"); // Apply CORS policy globally
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();每個(gè)端點(diǎn)
要為特定端點(diǎn)啟用 CORS,請使用以下[EnableCors]屬性:
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
? ? [HttpGet]
? ? [EnableCors("AllowSpecificOrigins")]
? ? public IActionResult Get()
? ? {
? ? ? ? return Ok("CORS is enabled for this endpoint.");
? ? }
}
步驟 3:允許所有來源(可選)
如果要允許所有來源,可以按如下方式修改 CORS 策略:
builder.Services.AddCors(options =>
{
? ? options.AddPolicy("AllowAll", builder =>
? ? {
? ? ? ? builder.AllowAnyOrigin()
? ? ? ? ? ? ? ?.AllowAnyHeader()
? ? ? ? ? ? ? ?.AllowAnyMethod();
? ? });
});然后,"AllowAll"在全局或針對特定端點(diǎn)應(yīng)用 CORS 時(shí),使用此策略名稱。注意:允許所有來源可能會(huì)使您的 API 面臨安全風(fēng)險(xiǎn),因此請謹(jǐn)慎使用。
步驟 4:測試 CORS 設(shè)置
配置好 CORS 后,可以使用 Postman 等工具、瀏覽器或前端應(yīng)用程序從不同的源發(fā)送請求進(jìn)行測試。檢查響應(yīng)頭中的條目,Access-Control-Allow-Origin以確認(rèn) CORS 是否按預(yù)期工作。

常見問題及故障排除
- 策略未應(yīng)用:請確保策略名稱與
UseCors中定義的策略名稱匹配AddCors。 - 選項(xiàng)請求失?。?/strong>如果您的 API 包含復(fù)雜請求,請確保該
OPTIONS方法已被允許。 - 配置錯(cuò)誤的源:請仔細(xì)檢查方法中的域名
WithOrigins。
結(jié)論
在 ASP.NET Core 中使用現(xiàn)代托管模型啟用 CORS 非常簡單,并且可以確保安全的跨域資源共享。通過有效地理解和配置 CORS 策略,您可以在保持安全性的同時(shí)增強(qiáng)應(yīng)用程序的互操作性。
以上就是在ASP.NET Core中啟用CORS跨域資源共享的方法的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core啟用CORS的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
.Net Framework .Net .NET Standard的概念及區(qū)別
這篇文章主要介紹了.Net Framework .Net .NET Standard的概念及區(qū)別,需要的朋友可以參考下2021-08-08
ASP.NET?Core使用Middleware設(shè)置有條件允許訪問路由
這篇文章主要介紹了ASP.NET?Core使用Middleware設(shè)置有條件允許訪問路由,文章圍繞主題相關(guān)資料展開學(xué)習(xí)內(nèi)容,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-02-02
ASP.NET Core 中間件的使用之全局異常處理機(jī)制
我們今天這篇文章就來說說代碼異常問題怎么快速定位,減少不必要的時(shí)間浪費(fèi)。異常是一種運(yùn)行時(shí)錯(cuò)誤,當(dāng)異常沒有得到適當(dāng)?shù)奶幚?,很可能?huì)導(dǎo)致你的程序意外終止。下面雄安邊將詳細(xì)介紹,需要的朋友可以參考下2021-09-09

