• 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!

  • 相关阅读:
    POI导入带有合并单元格的excel,demo实例,直接可以运行
    P1506 拯救oibh总部(BFS洪水灌溉)
    F03-Flask
    深入解析kubernetes controller-runtime
    MDC 实现 traceId 记录
    使用Python开源库Couler编写和提交Argo Workflow工作流
    MFC界面控件添加函数小技巧
    关于ReactV18的页面跳转传参和接收
    LeetCode 10. 正则表达式匹配
    Web前端—移动Web第一天(平面转换、渐变、综合案例--播客网页设计)
  • 原文地址:https://blog.csdn.net/weixin_43872912/article/details/134479924