.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. ...
最新文章
- 构建之法读后感part6
- 尽快安装修补程序!微软 Word 漏洞影响上百万人
- jsoncpp在vs2013上的编译
- glBegin()和glEnd()之间可调用的函数
- php mysql 链表_php实现数据结构的单向链表
- 对flex深入研究一点
- 万字总结:开源软件通识基础课第三周知识点总结
- Highcharts隐藏网格线
- 147_Power BI Report Server demo演示
- php---header函数的示例代码
- vue-cli3 按需加载loading,服务的方式调用
- 如何让Finder可以预览WebP格式图片?
- 2021-2027中国游戏开发工具市场现状及未来发展趋势
- ESP8266使用教程之初识
- 计算机音乐谱大全极乐净土,极乐净土maria曲谱
- 谷粒商城:秒杀系统设计与编写
- 面试中常见的问题总结
- 414.Fizz Buzz
- iOS应用内购常见问题及注意事项
- linux内核支持浮点吗,浅谈linux kernel对于浮点运算的支持
热门文章
- c语言 含有按键的窗口,一、Windows子窗口按钮类别—按键
- 使用计算机绘图软件首先要,如何学好计算机绘图 AUTOCAD 软件
- 5注21选5升序彩票
- Xilinx IP AXI DMA V7.1 -PG021英文文档翻译
- 面向节能的神经网络流量预测探讨
- MSP430 定时器A设计--PWM
- 腾讯云发布多款大数据应用产品,助力企业全面释放数据价值
- 新浪博客开发 授权认证 OAuth2.0
- 【TA-霜狼_may-《百人计划》】美术1.3 角色设计精要
- 目前微型计算机有哪些树莓派,树莓派推出Pi 400型微型计算机