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请求去检查目标站点是否可达,这样后台就会收到很多响应码为204的OPTIONS请求,虽然每次请求都耗时极少,但是一旦请求量大了,还是会占用部分连接资源,并且日志中也会存在很多没用的数据,导致日志文件体积增加。下面就来讲讲如何利用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字符串转为表格
C# devexpress gridcontrol 分页 控件制作
学物联网的小菜鸟: