zoukankan      html  css  js  c++  java
  • .net core入门-跨域访问配置

    Asp.net Core 跨域配置

     

    一般情况WebApi都是跨域请求,没有设置跨域一般会报以下错误

     No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:48057' is therefore not allowed access.

    ASP.net Core 跨域有两种,全局和区域

    全局跨域:

    打开Startup.cs文件.在ConfigureServices方法中添加以下代码

    1.配置跨域处理,允许所有来源:

          //配置跨域处理,允许所有来源:
                services.AddCors(options =>
                options.AddPolicy("自定义的跨域策略名称",
                p => p.AllowAnyOrigin())
                );

    2.允许一个或多个具体来源:

    //允许一个或多个具体来源:
    services.AddCors(options =>
            {
                // Policy 名稱 CorsPolicy 是自訂的,可以自己改
                options.AddPolicy("跨域规则的名称", policy =>
                {
                    // 設定允許跨域的來源,有多個的話可以用 `,` 隔開
                    policy.WithOrigins("http://localhost:3000","http://127.0.0.1")
                            .AllowAnyHeader()
                            .AllowAnyMethod()
                            .AllowCredentials();
                });
            });

    以上两种按需求选择一种即可.

    Configure方法中添加以下代码

    app.UseCors("自定义的跨域策略名称");//必须位于UserMvc之前 
    app.UseMvc();

     局部跨域第一种用法:

    1.ConfigureServices方法不变,删去Configure中的app.UseCors()方法

    2.在Controller顶部或者Action方法顶部加上[EnableCors("自定义的跨域策略名称")]特性,例如

    [EnableCors("自定义的跨域策略名称")]
    [Route("api/[controller]")]
    public class ContactController : Controller

    以上就可实现指定某个controller或者action跨域

    禁止跨域:

    禁止跨域在Controller或者Action加上[DisableCors]特性即可禁止跨域

    [HttpGet("{id}")]
    [DisableCors]
    public string Get(int id)
    {
      return "value";
    }

    参考文章:https://www.cnblogs.com/xiaoliangge/p/7650465.html

  • 相关阅读:
    时装画基础知识--如何画人体
    马士兵java视频学习顺序
    Mysql 中文字符乱码问题
    zendstudio 设置默认编码 utf-8 gbk
    MYSQL 本地无ROOT权限 忘记密码
    windows 3389 远程
    windows 老掉牙CMD的命令
    mysql-常用注入渗透手法
    ubuntu 添加多个IP
    windows下简单配置apache
  • 原文地址:https://www.cnblogs.com/lxhbky/p/11128217.html
Copyright © 2011-2022 走看看