在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. 构建之法读后感part6
  2. 尽快安装修补程序!微软 Word 漏洞影响上百万人
  3. jsoncpp在vs2013上的编译
  4. glBegin()和glEnd()之间可调用的函数
  5. php mysql 链表_php实现数据结构的单向链表
  6. 对flex深入研究一点
  7. 万字总结:开源软件通识基础课第三周知识点总结
  8. Highcharts隐藏网格线
  9. 147_Power BI Report Server demo演示
  10. php---header函数的示例代码
  11. vue-cli3 按需加载loading,服务的方式调用
  12. 如何让Finder可以预览WebP格式图片?
  13. 2021-2027中国游戏开发工具市场现状及未来发展趋势
  14. ESP8266使用教程之初识
  15. 计算机音乐谱大全极乐净土,极乐净土maria曲谱
  16. 谷粒商城:秒杀系统设计与编写
  17. 面试中常见的问题总结
  18. 414.Fizz Buzz
  19. iOS应用内购常见问题及注意事项
  20. linux内核支持浮点吗,浅谈linux kernel对于浮点运算的支持

热门文章

  1. c语言 含有按键的窗口,一、Windows子窗口按钮类别—按键
  2. 使用计算机绘图软件首先要,如何学好计算机绘图 AUTOCAD 软件
  3. 5注21选5升序彩票
  4. Xilinx IP AXI DMA V7.1 -PG021英文文档翻译
  5. 面向节能的神经网络流量预测探讨
  6. MSP430 定时器A设计--PWM
  7. 腾讯云发布多款大数据应用产品,助力企业全面释放数据价值
  8. 新浪博客开发 授权认证 OAuth2.0
  9. 【TA-霜狼_may-《百人计划》】美术1.3 角色设计精要
  10. 目前微型计算机有哪些树莓派,树莓派推出Pi 400型微型计算机