美文网首页
WebApi—CORS跨域

WebApi—CORS跨域

作者: 高调的小丑 | 来源:发表于2018-08-02 16:30 被阅读149次

添加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();
    }
}

这部分参考了懒得安分的文章,感谢!

相关文章

网友评论

      本文标题:WebApi—CORS跨域

      本文链接:https://www.haomeiwen.com/subject/cblsvftx.html