在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标头相关推荐

  1. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  2. NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

    咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...

  3. 在IIS上部署ASP.NET Core Web API

    目录 Visual Studio 2019和Dot Net Core 3.0 Windows Server上的Dot Net Core运行时 在服务器上启用IIS IIS应用程序池 IIS网站 创建A ...

  4. .NET Core Web APi大文件分片上传研究

    [导读]前两天发表利用FormData进行文件上传.NET和.NET Core Web APi FormData多文件上传,然后有人问要是大文件几个G上传怎么搞,常见的不就是分片再搞下断点续传,动动手 ...

  5. .NET和.NET Core Web APi FormData多文件上传

    [导读]最近因维护.NET和.NET Core项目用到文件上传功能,虽说也做过,但是没做过什么对比,借此将二者利用Ajax通过FormData上传文件做一个总结,通过视图提交表单太简单,这里不做阐述, ...

  6. Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

    图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...

  7. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...

  8. ASP.NET Core Web API

    1.简单介绍 ASP.NET Core Web API 是 ASP.NET Core MVC 的一个功能.ASP.NET Core MVC 包含了对 Web API 的支持.可以构建多种客户端的 HT ...

  9. 我如何启动任何.NET Core Web API项目

    目录 介绍 步骤 在Visual Studio中创建Web API项目 选项1 选项 2 IIS配置 配置Swashbuckle/Swagger 添加Swashbuckle 添加Newtonsoft. ...

最新文章

  1. SourceForge 停止在被遗弃项目捆绑第三方软件
  2. linux系统修改bond的ip,Linux下快速设定ip bond,linux设定ipbond
  3. mysql cluster_redislt;3.cluster集群模式gt;
  4. 【poj2983】 Is the Information Reliable?
  5. C++一天一个程序(八)
  6. 导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...
  7. XUL Tutorial(一)
  8. 3.2 Hadoop生态
  9. Android属性动画
  10. C语言 实现学生管理系统(手把手教学)
  11. wav文件降噪c语言,语音降噪
  12. extjs ueditor 图片_Ext整合ueditor示例
  13. 公众号知道我浏览他吗_浏览微信公众号会有记录吗?我们应该如何寻找记录?公众号浏览记录怎么查看?...
  14. 人事档案的重要性及注意事项
  15. wmctf2022 两题PvsZ
  16. dpdk 驱动移植叩开 kni 模块那些黑暗的角落
  17. 《第一行代码 第二版》Android studio java开发学习笔记+源码
  18. 美术课程对计算机的好处,电脑艺术设计的美术基本功重要性论文
  19. Win7系统组策略怎么打开 打开组策略的几种方法
  20. 微信公众号支付测试方法

热门文章

  1. 4007895555是招行的电话营销保险电话,建议大家不要参加
  2. css3动态画廊,11个非常棒的CSS3实现的图片画廊
  3. 如何识别图片中的表格数据(opencv 和pyteressact)
  4. 来算google的可视化编程工具——Blockly,不仅仅是玩具
  5. 在线大数据 / AI竞赛实训平台深度技术解析 | 文末抽奖
  6. mindray心电监护仪使用说明_心电监护仪基本操作方法
  7. 四国军棋引擎开发(7)概率分析与搜索优化
  8. 携职教育:初级会计坐等领证,今年继续教育怎么搞定?
  9. Logoist 4 for Mac(图标制作软件)
  10. 互金中概股“带伤转型”始末