第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

.net core 2.2 和廣泛開放的 CORS

.net core 2.2 和廣泛開放的 CORS

C#
侃侃爾雅 2022-12-31 10:38:48
從 .net core 2.2 開始,我們不能同時(shí)接受所有來源和接受憑據(jù)。雖然它解決了安全問題,但在某些情況下我們并不關(guān)心并且希望事情完全開放。因此,我在幾個(gè)線程上找到的建議解決方案是:    Services.AddCors(CorsOptions =>     {         CorsOptions.AddPolicy("AllowAll", P => { P             .SetIsOriginAllowed(_ => true)             .AllowAnyMethod()             .AllowAnyHeader()             .AllowCredentials();         });     });但這仍然會(huì)出現(xiàn)以下錯(cuò)誤:對預(yù)檢請求的響應(yīng)未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標(biāo)頭。對于具有 2.2 的廣泛開放的 CORS,什么是可行的解決方案?
查看完整描述

2 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

我認(rèn)為您所需要的只是@Praneet 提到的以下內(nèi)容。創(chuàng)建全訪問策略


services

    .AddCors(options => options

        .AddPolicy("WideOpen", p => p

            .AllowAnyOrigin()

            .AllowAnyMethod()

            .AllowAnyHeader())

    );

您還需要一個(gè)Configure方法來全局啟用它


public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

    app.UseCors("WideOpen");

}

更新的答案


services

    .AddCors(options => options

        .AddPolicy("WideOpen", p => p

            .SetIsOriginAllowedToAllowWildcardSubdomains()

            .WithOrigins("*")

            .AllowAnyMethod()

            .AllowAnyHeader()

            .AllowCredentials())

    );

根據(jù)允許的來源所需的文件。 SetIsOriginAllowedToAllowWildcardSubdomains所以我已經(jīng)設(shè)置WithOrigins使用通配符


更新的答案 2


好的,我對你的問題有個(gè)想法。我認(rèn)為這不是理想或推薦的解決方案,但它會(huì)起作用。您可以有一個(gè)中間件,它為每個(gè)請求注入響應(yīng)標(biāo)頭,這些請求需要允許 AnyOrigin、AnyMethod 和 AnyHeader 以及憑據(jù)。但是,它只會(huì)Access-Control-Allow-Origin為請求中存在的 Origin 添加標(biāo)頭,因此允許任何來源。


如果 Ajax 檢查不起作用,您可以將其刪除。唯一的缺點(diǎn)是,它將為所有請求注入標(biāo)頭。


public class WideOpenCorsMiddleware

{

    private readonly RequestDelegate _next;


    public WideOpenCorsMiddleware(RequestDelegate next)

    {

        _next = next;

    }


    public async Task Invoke(HttpContext context)

    {

        var response = context.Response;


        // check if it's an ajax request

        if (context.Request.Headers != null && context.Request.Headers["X-Requested-With"] == "XMLHttpRequest")

        {

            response.Headers.Add("Access-Control-Allow-Origin",

                new[] { (string)context.Request.Headers["Origin"] });

            response.Headers.Add("Access-Control-Allow-Headers",

                new[] { "Origin, X-Requested-With, Content-Type, Accept" });

            response.Headers.Add("Access-Control-Allow-Methods", new[] { "GET, POST, PUT, DELETE, OPTIONS" });

            response.Headers.Add("Access-Control-Allow-Credentials", new[] { "true" });

            response.StatusCode = 200;

        }


        // if not a pre-flight request

        if (context.Request.Method != "OPTIONS")

        {

            await _next(context);

        }

    }

}

你也可以有這個(gè)擴(kuò)展方法,這樣你就可以很容易地在Configure方法中使用它。


// Extension method used to add the middleware to the HTTP request pipeline.

public static class MiddlewareExtensions

{

    public static IApplicationBuilder UseWideOpenCors(this IApplicationBuilder builder)

    {

        return builder.UseMiddleware<WideOpenCorsMiddleware>();

    }

}

最后,在Configure方法中,添加以下行,可能在頂部:


public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

    app.UseWideOpenCors();

}


查看完整回答
反對 回復(fù) 2022-12-31
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

在您的 appsettings.json 中添加您的 cors 來源。是這樣的:


"CorsOrigins": {

    "Urls": [ "http://localhost:4200", "http://localhost:8090", "https://localhost:44376" ]

  }

然后像這樣設(shè)置你的啟動(dòng):


var corsOriginsSection = Configuration.GetSection("CorsOrigins");

var origins = corsOriginsSection.Get<CorsOrigins>();


services.AddCors(options => options.AddPolicy("AllowSpecificOrigin", p => p.WithOrigins(origins.Urls)

                                               .AllowAnyMethod()

                                               .AllowAnyHeader()));

然后在你的控制器上添加這個(gè):


 [EnableCors("AllowSpecificOrigin")]

那應(yīng)該有效。


我將使用的類是這樣的:


public interface ICorsOrigins

{

    string[] Urls { get; set; }

}

public class CorsOrigins : ICorsOrigins

{

    public string[] Urls { get; set; }

}

我會(huì)保留 appsettings 中的起源,否則它將是硬編碼的東西。


就像特定來源一樣,創(chuàng)建一個(gè)策略 All Access 并根據(jù)您的要求使用它


查看完整回答
反對 回復(fù) 2022-12-31
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號