当前位置:首页 > 编程 > 正文内容

C# ASP.NET WebApi 跨域设置

rqc2年前 (2021-07-16)编程518

概述

前后端分离开发模式,一定会遇到跨域的问题。这里收集了2种 C# Asp.Net webapi 相关的跨域解决方案,方便后续查找参考。

2021/10/28 更新: 有更加简单高效的方式推荐《C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置》

方案一:官方nuget扩展 Microsoft.AspNet.WebApi.Cors

第一步:搜索安装Microsoft官方扩展包:Microsoft.AspNet.WebApi.Cors

image

第二步:配置跨域条件
修改 App_Start/WebApiConfig.cs 添加跨域条件:


public static class WebApiConfig

{

public static void Register(HttpConfiguration config)

{

// Web API 配置和服务

// 添加跨域设置

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));



// Web API 路由

config.MapHttpAttributeRoutes();



config.Routes.MapHttpRoute(

name: "DefaultApi",

routeTemplate: "XXX/{controller}/{action}/{id}",

//routeTemplate: "api/{controller}/{id}",

defaults: new { id = RouteParameter.Optional }

);

}

}

这里未对跨域做任何限制,如果追求更高的安全性,有很多高级的设置,可以参考文章:https://www.cnblogs.com/landeanfen/p/5177176.html

方案二:自定义判断请求头

针对一般处理程序(.ashx)可以通过判断请求头来处理跨域访问。
在ProcessRequest方法中判断请求头,并设置返回头文件:

//支持跨域访问.
string origin = context.Request.Headers["Origin"];
if (string.IsNullOrEmpty(origin) == false)
{
    context.Response.Headers["Access-Control-Allow-Origin"] = origin;
    // context.Response.Headers["Access-Control-Allow-Origin"] = "*";
    context.Response.Headers["Access-Control-Allow-Credentials"] = "true";
    context.Response.Headers["Access-Control-Allow-Headers"] = "x-requested-with,content-type";
}



扫描二维码推送至手机访问。

版权声明:本文由任前程发布,如需转载请注明出处。

本文链接:https://rqc.im/?id=21

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。