options.AddPolicy("CorsPolicy", policy => policy.SetPreflightMaxAge(TimeSpan.FromSeconds(1800L));//update by jason policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod();

2:在confing里面使用跨域的中间件

   public void Configure(IApplicationBuilder app, IWebHostEnvironment env, TaskListService taskListService)
            //Exceptionless日志
            var isEnableLogger = Convert.ToBoolean(Configuration.GetSection("Exceptionless:Enabled").Value ?? "false");
            if (isEnableLogger)
                // 封装使用Exceptionless分布式日志组件
                ExceptionlessClient.Default.Configuration.ApiKey = Configuration.GetSection("Exceptionless:ApiKey").Value;
                // Exceptionless传输地址
                ExceptionlessClient.Default.Configuration.ServerUrl = Configuration.GetSection("Exceptionless:ServerUrl").Value;
                ExceptionlessClient.Default.SubmittingEvent += OnSubmittingEvent;
                app.UseExceptionless();
            if (env.IsDevelopment())
                app.UseDeveloperExceptionPage();
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseCors("CorsPolicy");
*****

3:效果截图:

4: 后来多加了一行code:   policy.SetPreflightMaxAge(TimeSpan.FromSeconds(1800L)); 

     效果:第一次请求会存在204,下一次相同的url没有发现204的请求,其实就是给缓存了起来,但是不符合预期,

5:自己手写一个全局的过滤器,问题解决OK,去掉了多余的204预检请求

public class FEGCrosFilter : IActionFilter
        public void OnActionExecuted(ActionExecutedContext context)
            //简单粗暴
            context.HttpContext.Request.Headers.Add("Access-Control-Allow-Headers", "*");
            context.HttpContext.Request.Headers.Add("Access-Control-Allow-Methods", "*");
            context.HttpContext.Request.Headers.Add("Access-Control-Max-Age", new Microsoft.Extensions.Primitives.StringValues("24*60*60"));
        public void OnActionExecuting(ActionExecutingContext context)

6:注入全局的过滤器

7:查看效果

这个问题一直困扰了我好久,之前在网络上找了很多的相关资料都没有解决,今天终于解决了,很开心。

最后(之前的跨域中间件其实也可以去掉了,但是考虑到其他的http和https网站都有调用该项目的接口,先观察一段时间再做进一步打算),

感觉这个中间件是否存在一些bug?不然为啥非要多一次options 204的预检,重复多余的请求会严重影响服务器的性能!牛年大吉大利!欢迎大家留言讨论请教。

Asp.netCore WebApi 3.1 跨域的预检查options问题1:我们直接使用core跨域的中间件 ,注入跨域服务,services.AddCors(options => { // CorsPolicy 是自訂的 Policy 名稱 options.AddPolicy("CorsPolicy", policy => {
架构设计:ASP.Net Core 3.1 WebApi+Swagger+Jwt+Autofac。 分享初衷:最近在做前后端分离项目,用到了文件上传下载功能,找了很多类似的案例,基本上都是相互转载,很少有原创的(总之找了很久没找到合适的),最后没有达到我想要的期效果,故写此篇博客。 需求背景:以前在做文件上传下载,都是基于FrameWork项目或者Core Web项目实现的文件上传或下载,基于web的文件下载及权限比较好实现的。但是现在很多公司技术领导层,都在推行前后端分离理念,所以这一次我承担了Core Api 架构设计,采用的是Vue+Core 3.1 WebApi去实现前后端分离. 实现效果图:https://blog.csdn.net/qq_15632461/article/details/108626802
协议(HTTP或者HTTPS)、IP、端口三者都相同,则为同源,否则为跨域跨域请求,就是这么来的。 配置OPTIONS请求,有两种情况,第一种是开发环境,第二种是测试环境、生产环境。 开发环境,配置如下: //配置代理 //修改config/index.js文件 dev: { proxyTable: { //可以配置N个 ‘/api’: { target: process.env.API_ROOT, changeOrigin: true, //是否跨域 pathRewrite: { ‘^/api’: ‘
使用Nginx过滤OPTIONS请求204) 在前后端分离项目中,由于跨域,导致前端每次请求后台都会发送一个options请求检查目标站点是否可达,这样后台就会收到很多响应码为204OPTIONS请求,虽然每次请求都耗极少,但是一旦请求量大了,还是会占用部分连接资源,并且日志中也会存在很多没用的数据,导致日志文件体积增加。下面就来讲讲如何利用Nginx拦截这些OPTIONS请求 拦截请求之前 浏览器的请求信息 可以看到每个200响应之前都有一个204响应,耗也就几毫秒,但是就是看它不爽。 listen 80; server_name www.5isousuo.com www.liqinglin.cn www.5wwfu6.cn; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/qqbt.app/...
4. 在“项目名称”中输入项目名称,选择“Web API”模板,然后单击“创建”。 5. 在“创建新项目”窗口中,选择“ASP.NET Core 3.1”作为目标框架。 6. 在“创建新项目”窗口中,选择“身份验证”选项,根据需要选择身份验证类型。 7. 单击“创建”按钮,Visual Studio将创建一个新的Web API项目。 8. 在“解决方案资源管理器”中,打开“Controllers”文件夹,创建一个新的控制器。 9. 在控制器中添加所需的操作方法。 10. 在“启动.cs”文件中,配置应用程序的路由和服务。 11. 运行应用程序,测试Web API的功能。 以上是.NET Core 3.1搭建Web API项目的基本步骤。根据需要,您可以添加其他功能和组件来扩展应用程序的功能。 OPENROWSET(BULK N'K:\Filetmp\test.json', SINGLE_NCLOB) AS JSON CROSS APPLY OPENJSON(BulkColumn) WITH( [fielda] [nvarchar](50) '$.fielda', ) As t SQL将Json字符串转为表格 不用这么复杂吧?这个json属于简单的二层结构。 SELECT t.* OPENROWSET(BULK N'K:\Filetmp\test.json', SINGLE_NCLOB) AS JSON CROSS APPLY OPENJSON(BulkColumn) WITH( [order_hold] [nvarchar](50) '$.order_hold', ...) t C# devexpress gridcontrol 分页 控件制作 学物联网的小菜鸟: 有木有完整的demo呀