• .net formwork WebApi 跨域问题


    背景:  

        ASP.NET Formwork  Api / ASP.Net Core Api  做比较。 有关  Global.asax、FilterConfig.cs 和 RouteConfig.cs 等都被 Program.cs 和 Startup.cs两个类取而代之. 程序中 把Program.cs 作为 Web 应用程序的入口,程序启动的时候会调用 Startup.cs 类。

     Startup.cs 作用就是,对项目中用到的  静态文件,管道,服务,日志,路由,数据库连接,过滤器的注册  等  所有的有关程序的启动运行中用到的。

        对于.Core的一个跨域问题,很简单只需要进行Startup.cs配置。这里主要说一下关于 formwork  api 的跨域。两种实现(个人推荐第二种),话不多说,开撸!

    方式1    

      1. Nuget安装Microsoft.AspNet.WebApi.Cors

        项目引用 => 右键 => 管理Nuget程序包

        搜索包名称

        选择包,点击安装

      2. 全局配置跨域

        在WebApiConfig.cs中加入代码

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

        

         

        3个星号代表3个参数(可以用星号说明可以用正则)

        origins:访问来源(允许哪些网站访问,多个网站用,间隔)示例:http://www.test.com

        headers:

        methods:get post put 等等

      3. 指定接口允许跨域

        1. 在WebApiConfig.cs中加入代码

        

       config.EnableCors();

        2. 在指定的Controller接口文件中加入代码

        

         

        上述代码将允许TestController所有的接口跨域访问,

        当然该注解也可以放到指定接口上。参考地址“https://blog.csdn.net/woflyoycm/article/details/118890443”

    方式2

      1. Nuget安装Microsoft.Owin.Host.SystemWeb

        项目引用 => 右键 => 管理Nuget程序包

        搜索包名称

        选择包,点击安装

      2,新增CorsConfig文件

        在App_Start文件夹中添加CorsConfig.cs文件如图

        

          代码如下:

    using Microsoft.Owin;
    using Owin;
    using Microsoft.Owin.Cors;
    
    [assembly: OwinStartup(typeof(aaa.CorsConfig))]
    
    namespace aaa
    {
        public class CorsConfig
        {
            public void Configuration(IAppBuilder app)
            {
    
            }
        }
    }

      3,调用允许跨域方法  

        在Configuration中进行调用 

            public void Configuration(IAppBuilder app)
            {
                //WebApi允许跨域调用
                app.UseCors(CorsOptions.AllowAll);
            }

        跨域接口访问,没问题。

    结语

    过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website、Web Application、Web API等部署在IIS上,事实上在2010年前并没有什么不妥,但随着近些年来Web的发展,特别是移动互联网飞速发展,IIS                          作为Web Server已经暴露出他的不足了。主要体现在两个方面,ASP.NET (System.Web)紧耦合IIS,IIS紧耦合OS,这就意味着,我们的Web Framework必须部署在微软的操作系统上,难以跨平台

    正是由于微软产品系紧耦合的关系,才造成跨平台上的不足,这也是被饱受诟病。所以我们需要OWIN来解耦,在面向对象的世界里,接口往往是解耦的关键,如下图所示:

    使用OWIN,Web Framework不再依赖IIS和OS,这意味着你能使用任何你想的来替换IIS(比如:Katana或者Nowin),并且在必要时随时升级,而不是更新操作系统。当然,如果你需要的话,你可以构建自定义的宿主和Pipeline去处理Http请求。

    这一切的改变都是由于OWIN的出现,他提供了明晰的规范以便我们快速灵活的去扩展Pipeline来处理Http请求,甚至可以不写任何一句代码来切换不同的Web Server,前提是这些Web Server遵循OWIN规范。

  • 相关阅读:
    Java日期工具类,Java时间工具类,Java时间格式化
    js 小数取整,js 小数向上取整,js小数向下取整
    Tomcat v7.0 Server at localhost are already in use,tomcat提示端口被占用,tomcat端口已经被使用,tomcat端口占用
    easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大
    Jquery Easyui验证扩展,Easyui验证,Easyui校验,js正则表达式
    根据日期字符串获取星期几,日期获取星期,时间获取星期,js获取星期
    jquery easyui combobox 级联及触发事件,combobox级联
    js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数
    设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选
    layer弹出层不居中解决方案,layer提示不屏幕居中解决方法,layer弹窗不居中解决方案
  • 原文地址:https://www.cnblogs.com/BFMC/p/15979384.html
Copyright © 2020-2023  润新知