.NET Core Web API上为CORS启用OPTIONS标头
在dotnet core web api中支持CORS(跨域访问)
问题描述:
需要提前设置好cors,设置好cors后,get或者post(pain/text)这些简单类型都可以请求。
但是,
需要对服务器进行非简单请求时,比如context-type为json时,第一次会发送option方法探测,第二次才会正式发送post请求,由于webapi未开启option方法,前端会收到204错误(204 No Content),post也就没发出去。
解决方法:
通过中间间,对option方法进行启用,并回应200状态码。
设置cors,具体做法:
步骤1.在startup.cs 的ConfigureServices方法中加入
services.AddCors(Options =>
Options.AddPolicy("543",
p => p.AllowAnyOrigin())
);// 代码写在mvc前面
// services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
步骤2.在startup.cs 的Configure方法中加入
app.UseCors("543");// 代码写在mvc前面
//app.UseMvc();
设置cors 完毕。
开启option方法,具体做法:
步骤1. 创建一个OptionsMiddleware.cs类
步骤2. 复制代码进去
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace xxxxxxxxx
{public class OptionsMiddleware{private readonly RequestDelegate _next;public OptionsMiddleware(RequestDelegate next){_next = next;}public Task Invoke(HttpContext context){return BeginInvoke(context);}private Task BeginInvoke(HttpContext context){if (context.Request.Method == "OPTIONS"){context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { (string)context.Request.Headers["Origin"] });context.Response.Headers.Add("Access-Control-Allow-Headers", new[] { "Origin, X-Requested-With, Content-Type, Accept" });context.Response.Headers.Add("Access-Control-Allow-Methods", new[] { "GET, POST, PUT, DELETE, OPTIONS" });context.Response.Headers.Add("Access-Control-Allow-Credentials", new[] { "true" });context.Response.StatusCode = 200;return context.Response.WriteAsync("OK");}return _next.Invoke(context);}}public static class OptionsMiddlewareExtensions{public static IApplicationBuilder UseOptions(this IApplicationBuilder builder){return builder.UseMiddleware<OptionsMiddleware>();}}
}
步骤3.在startup.cs 的Configure方法中加入
app.UseOptions(); // 在方法最开始的位置加,其他位置没测试。
开启option方法,设置完毕。
.NET Core Web API上为CORS启用OPTIONS标头相关推荐
- 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...
- NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?
咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...
- 在IIS上部署ASP.NET Core Web API
目录 Visual Studio 2019和Dot Net Core 3.0 Windows Server上的Dot Net Core运行时 在服务器上启用IIS IIS应用程序池 IIS网站 创建A ...
- .NET Core Web APi大文件分片上传研究
[导读]前两天发表利用FormData进行文件上传.NET和.NET Core Web APi FormData多文件上传,然后有人问要是大文件几个G上传怎么搞,常见的不就是分片再搞下断点续传,动动手 ...
- .NET和.NET Core Web APi FormData多文件上传
[导读]最近因维护.NET和.NET Core项目用到文件上传功能,虽说也做过,但是没做过什么对比,借此将二者利用Ajax通过FormData上传文件做一个总结,通过视图提交表单太简单,这里不做阐述, ...
- Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- ASP.NET Core Web API
1.简单介绍 ASP.NET Core Web API 是 ASP.NET Core MVC 的一个功能.ASP.NET Core MVC 包含了对 Web API 的支持.可以构建多种客户端的 HT ...
- 我如何启动任何.NET Core Web API项目
目录 介绍 步骤 在Visual Studio中创建Web API项目 选项1 选项 2 IIS配置 配置Swashbuckle/Swagger 添加Swashbuckle 添加Newtonsoft. ...
最新文章
- SourceForge 停止在被遗弃项目捆绑第三方软件
- linux系统修改bond的ip,Linux下快速设定ip bond,linux设定ipbond
- mysql cluster_redislt;3.cluster集群模式gt;
- 【poj2983】 Is the Information Reliable?
- C++一天一个程序(八)
- 导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...
- XUL Tutorial(一)
- 3.2 Hadoop生态
- Android属性动画
- C语言 实现学生管理系统(手把手教学)
- wav文件降噪c语言,语音降噪
- extjs ueditor 图片_Ext整合ueditor示例
- 公众号知道我浏览他吗_浏览微信公众号会有记录吗?我们应该如何寻找记录?公众号浏览记录怎么查看?...
- 人事档案的重要性及注意事项
- wmctf2022 两题PvsZ
- dpdk 驱动移植叩开 kni 模块那些黑暗的角落
- 《第一行代码 第二版》Android studio java开发学习笔记+源码
- 美术课程对计算机的好处,电脑艺术设计的美术基本功重要性论文
- Win7系统组策略怎么打开 打开组策略的几种方法
- 微信公众号支付测试方法
热门文章
- 4007895555是招行的电话营销保险电话,建议大家不要参加
- css3动态画廊,11个非常棒的CSS3实现的图片画廊
- 如何识别图片中的表格数据(opencv 和pyteressact)
- 来算google的可视化编程工具——Blockly,不仅仅是玩具
- 在线大数据 / AI竞赛实训平台深度技术解析 | 文末抽奖
- mindray心电监护仪使用说明_心电监护仪基本操作方法
- 四国军棋引擎开发(7)概率分析与搜索优化
- 携职教育:初级会计坐等领证,今年继续教育怎么搞定?
- Logoist 4 for Mac(图标制作软件)
- 互金中概股“带伤转型”始末