c# webapi 处理跨源问题

利用cors中间件处理跨源问题。
首先,什么是跨域(跨源)问题:
是指不同站点之间,使用ajax无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 这个就是我们常说的同源策略(协议,域名,端口都相同就是同源)
在这里插入图片描述

解决跨域问题:让后端允许自己访问。
工作原理:服务器在返回响应报文的书一样,在响应头设置一个允许的header。
在响应报头添加Access-Control-Allow-Origin标签。从而允许指定域的站点访问当前域上的资源。

c# cors中间件设置指定源允许访问。 —在startup.cs文件中设置

public void ConfigureServices(IServiceCollection services)
{
    //增加cors中间件到应用到服务器中,类似配置服务器
    services.AddCors(options =>
    {
        options.AddPolicy(name: MyAllowSpecificOrigins,
        policy =>
        {
            //设置允许的协议和域名
            //.AllowAnyOrigin() 允许所有源
            policy.WithOrigins("http://example.com",
            "http://www.contoso.com”)
            //设置所允许的请求头
            .AllowAnyHeader() 
            //设置所允许的方法
            .AllowAnyMethod();;
        });
    });
    // services.AddResponseCaching();
    services.AddControllers();
}
//在configure文件中加入 —启用中间件 这句话必须放在userouting之后,useauthorization之前
//这是所有的接口都启用
app.UseCors(MyAllowSpecificOrigins);

c# 使用跨源策略
除了上面的在configure文件中 app.UseCors(MyAllowSpecificOrigins);
直接允许所有的接口都适用中间件外,也能指定接口用哪个跨源策略。
ps:注意这句话必须放在userouting之后,useauthorization之前

这些都是在configureservices中设置完跨源策略之后用的。(可以设置多个跨源策略,命名不同)
1.使用属性跨源

//在控制器里,写路径的地方
// GET api/values 
[EnableCors("AnotherPolicy")] 
[HttpGet] 
public ActionResult<IEnumerable<string>> Get() 
{ 
    return new string[] { "green widget", "red widget" }; 
}

2.通过终结点路由启用

//在configure中调用控制器的地方
endpoints.MapGet("/echo”, 
    context => context.Response.WriteAsync("echo")) 
    .RequireCors(MyAllowSpecificOrigins);

致此:希望大家不要跟我一样懒,且畏惧尝试。respect!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值