• 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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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" }; 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.通过终结点路由启用

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

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

  • 相关阅读:
    量化:基于支持向量机的择时策略
    计算机科学速成课
    用excel计算矩阵的乘积
    CTFshow-PWN-栈溢出(pwn43)
    Vue3.x新特性 Vue3新功能(详细)
    3D全景:为各行业提供更真实的交互体验
    医疗实施-MDM主数据管理基本介绍
    Tableau表格取消合并单元格
    PHP代码审计入门-DVWA靶场命令注入篇
    [Python进阶] 获取计算机相关信息:Psutil
  • 原文地址:https://blog.csdn.net/weixin_43872912/article/details/134479924