添加nuget包:microsoft.aspnet.webapi.cors
在WebApiConfig.cs文件中配置跨越
using System.Web.Http.Cors;
namespace MiLan.FinanceAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//跨域配置
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
这部分代码会导致这个接口称为一个公告接口,任何人都可以访问,这个时候我们需要配置一下
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
在Web.config文件中添加配置文件信息
<appSettings><add key="cors:milanHeaders" value="*"/>
<add key="cors:milanMethods" value="*"/>
<add key="cors:milanOrigins" value="http://localhost:8081"/>
</appSettings>
用逗号隔开来允许多个域名请求
在WebApiConfig.cs文件中配置跨越
//跨域配置
//config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
var headers = ConfigurationManager.AppSettings["cors:milanHeaders"];
var orgins = ConfigurationManager.AppSettings["cors:milanOrigins"];
var methods = ConfigurationManager.AppSettings["cors:milanMethods"];
var supportCors = new EnableCorsAttribute(orgins, headers, methods)
{
SupportsCredentials = true
};
config.EnableCors(supportCors);
如果只想对某一个api进行跨域,可以直接在API的类上面使用特性标注即可。
[EnableCors(origins: "http://localhost:8081/", headers: "*", methods: "GET,POST,PUT,DELETE")]
public class BalanceSheetController : ApiController
{
[HttpPost]
public BasicResponse GetBalanceSheet()
{
return AutofacExt.GetFromFac<BalanceSheetManageApp>().GetAllBalanceSheet();
}
}
这部分参考了懒得安分的文章,感谢!
网友评论