Asp.Net Core 跨域处理_Ajax 跨域处理整理

一、Asp.Net Core 跨域处理_Ajax 跨域处理整理

Asp.Net Core中已经自带了跨域处理。

跨域处理,需要3步

1.配置跨域定义,在ConfigureServices中

复制代码
public void ConfigureServices(IServiceCollection services)
{
    //定义配置跨域处理
    services.AddCors(options =>
    {
        //完全公开,不支持cookie传递
        options.AddPolicy("any", policy =>
        {
            policy.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
        });

        //指定域名公开,可以支持cookie
        options.AddPolicy("all", policy =>
        {
            policy.WithOrigins(
                "null", //file:///本地测试可以访问
                "http://localhost:8080",
                    "http://localhost:8081"
                )
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials();
        });
    });
}
复制代码

2.开启跨域,在Configure中

复制代码
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    //开启路由
    app.UseRouting();
    //开启 跨域处理,此代码必须放在 UseRouting() 和 UseEndpoints() 之间
    app.UseCors();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });

}
复制代码

 

3.在控制器中,指定跨域公开

使用EnbleCore() 在控制器或者action 中指定

    [EnableCors("any")]
    [Route("[controller]/[action]/")]
    public class StuController : Controller
    {
    }

 

 

二、客户端完全公开

ajax请求都支持

        var url = 'http://localhost:52401/stu/getlist';
        $.get(url, {}, function (res) {
            console.info(res);
        });

 

三、客户端带cookie指定域名跨域

复制代码
var url = 'http://localhost:52401/class/getcookie';
$.ajax({
    url: url,
    data: {},
    xhrFields: {
        withCredentials: true  //支持附带详细信息
    },
    crossDomain: true,//请求偏向外域
    success: function (res) {
        console.info(res);
    }
});
复制代码

 

四、开发细节问题注意

1.后台配置域名,不要以反斜杠结尾

 正确的配置方式如下:

 

 

更多:

Ajax跨域请求附带Cookie/Ajax跨域请求附带身份凭证

Asp.Net WebApi 启用CORS跨域访问指定多个域名

Cors 跨域Access-Control-Allow-Origin

Ajax跨域请求中的Cookie问题(默认不带cookie等凭证)

posted @   天马3798  阅读(830)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-01-09 C#多线程读写同一文件处理
2018-01-09 Asp.Net 管道事件注册/HttpApplication事件注册
2018-01-09 PreApplicationStartMethodAttribute程序启动扩展
2018-01-09 Asp.Net 拦截请求自定义处理
2017-01-09 Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
2014-01-09 js修改input的type属性问题
点击右上角即可分享
微信分享提示