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

常見(jiàn)問(wèn)題及故障排除
- 策略未應(yīng)用:請(qǐng)確保策略名稱與
UseCors中定義的策略名稱匹配AddCors。 - 選項(xiàng)請(qǐng)求失?。?/strong>如果您的 API 包含復(fù)雜請(qǐng)求,請(qǐng)確保該
OPTIONS方法已被允許。 - 配置錯(cuò)誤的源:請(qǐng)仔細(xì)檢查方法中的域名
WithOrigins。
結(jié)論
在 ASP.NET Core 中使用現(xiàn)代托管模型啟用 CORS 非常簡(jiǎn)單,并且可以確保安全的跨域資源共享。通過(guò)有效地理解和配置 CORS 策略,您可以在保持安全性的同時(shí)增強(qiáng)應(yīng)用程序的互操作性。
以上就是在ASP.NET Core中啟用CORS跨域資源共享的方法的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core啟用CORS的資料請(qǐng)關(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è)置有條件允許訪問(wèn)路由
這篇文章主要介紹了ASP.NET?Core使用Middleware設(shè)置有條件允許訪問(wèn)路由,文章圍繞主題相關(guān)資料展開(kāi)學(xué)習(xí)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-02-02
ASP.NET熱點(diǎn)問(wèn)題解答14個(gè)
ASP.NET熱點(diǎn)問(wèn)題解答14個(gè)...2006-07-07
.NET?Core?中對(duì)象池?Object?Pool的使用
這篇文章主要介紹了?.NET?Core?中對(duì)象池?Object?Pool的使用,對(duì)象池簡(jiǎn)單來(lái)說(shuō)就是一種為對(duì)象提供可復(fù)用能力的軟件設(shè)計(jì)思路,對(duì)象池最常用的場(chǎng)景是游戲設(shè)計(jì),因?yàn)樵谟螒蛑写罅看嬖谥蓮?fù)用的對(duì)象,源源不斷的子彈出現(xiàn)并不是循環(huán)再生的,下面一起進(jìn)入文章了解具體內(nèi)容吧2021-11-11
ASP.NET Core 中間件的使用之全局異常處理機(jī)制
我們今天這篇文章就來(lái)說(shuō)說(shuō)代碼異常問(wèn)題怎么快速定位,減少不必要的時(shí)間浪費(fèi)。異常是一種運(yùn)行時(shí)錯(cuò)誤,當(dāng)異常沒(méi)有得到適當(dāng)?shù)奶幚?,很可能?huì)導(dǎo)致你的程序意外終止。下面雄安邊將詳細(xì)介紹,需要的朋友可以參考下2021-09-09
asp.net 獲取數(shù)據(jù)庫(kù)連接字符串
本文主要介紹了asp.net獲取數(shù)據(jù)庫(kù)連接字符串的具體實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以看下2016-12-12

