iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Software Development

.NET Core與React組合開發技系列 第 12

.NET Core與React組合開發技_第12天_CORS同源政策修正

  • 分享至 

  • xImage
  •  

在上一篇會發現跑出來沒有存取成功
開啟console會觀察到有出現
違反同源政策的error訊息
Access to XMLHttpRequest at 'https://localhost:7247/api/product' from origin 'https://localhost:44481' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

https://ithelp.ithome.com.tw/upload/images/20220923/2010745270nMNzKgLU.png
就Browser而言有所謂的同源政策
白話來說也就是同一個網站內的程式資源可互相存取訪問,但若不同則禁止訪問。

比方不同domain name
http://abc.com跟http://def.com
或同domain name但不同port的
http://localhost:3500http://localhost:3800
皆為非同源的實際案例

這裡可以於Startup.cs中開啟Cors機制

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddCors(options =>
{
    options.AddPolicy("any", builder =>
    {
        //允許任何不同來源的站台應用存取
        builder.SetIsOriginAllowed(_ => true)
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials();
    });
});
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("any");

app.MapControllerRoute(
    name: "default",
    pattern: "{controller}/{action=Index}/{id?}");

app.MapFallbackToFile("index.html"); ;

app.Run();

https://ithelp.ithome.com.tw/upload/images/20220923/20107452Q1vg27Hytf.png

即可調整CORS限制的問題
https://ithelp.ithome.com.tw/upload/images/20220923/20107452ZX3GLlQohl.png


上一篇
.NET Core與React組合開發技_第11天_React整併axios呼叫api
下一篇
.NET Core與React組合開發技_第13天_序列化
系列文
.NET Core與React組合開發技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言