• NCF 如何设置接口跨域访问


    简介

    后端开发一定对跨域问题比较熟悉了,那么今天我们来聊一下NCF的跨域问题,有2种方案

    一、直接在服务端的web服务器设置跨域,即IIS设置跨域问题(参考:https://blog.csdn.net/guzicheng1990/article/details/106253104/)

    二、在后台代码中增加跨域设置,此种方法比较灵活(推荐)

    今天重点讲解第二种方案

    步骤

    1.在Senparc.Web的Startup.cs中增加使用跨域

    2.在建立的Xncf模块中增加中间件,并在中间件中加入启用跨域

    3.在Xncf模块中增加跨域允许的内容

    实施

    1.在Senparc.Web的Startup.cs中增加使用跨域

    1 app.UseCors();

    2.在建立的Xncf模块中增加中间件,并在中间件中加入启用跨域

     1 using Microsoft.AspNetCore.Builder;
     2 using Microsoft.AspNetCore.Http;
     3 using Microsoft.Extensions.DependencyInjection;
     4 using Microsoft.Extensions.FileProviders;
     5 using Microsoft.Extensions.Options;
     6 using Senparc.Ncf.XncfBase;
     7 using Senparc.Xncf.Admin.Utils;
     8 using System;
     9 using System.IO;
    10 
    11 namespace Senparc.Xncf.Admin
    12 {
    13     public partial class Register : IXncfMiddleware
    14     {
    15         public IApplicationBuilder UseMiddleware(IApplicationBuilder app)
    16         {
    17             app.UseCors("cors");
    18             app.UseRouting();
    19 
    20             //添加MVC模式支持
    21             app.UseEndpoints(endpoints =>
    22             {
    23                 endpoints.MapControllerRoute(
    24                     name: "default",
    25                     pattern: "{controller=Home}/{action=Index}/{id?}");
    26                 });
    27                 return app;
    28             }
    29     }
    30     }

    3.在Xncf模块中增加跨域允许的内容

     1         public void AddXncfDatabaseModule(IServiceCollection services)
     2         {
     3             //DOT REMOVE OR MODIFY THIS LINE 请勿移除或修改本行 - Entities Point
     4             //ex. services.AddScoped(typeof(Color));
     5             //跨域,这里可以自定义跨域的数组
     6             var domains = FileServerConfiguration.GetSection("Cors:Domain").Get<string[]>();
     7             var allowedOrigins = new HashSet<string>(domains, StringComparer.OrdinalIgnoreCase);
     8             //跨域默认策略
     9             services.AddCors(options => options.AddDefaultPolicy(builder =>
    10             {
    11                 builder.AllowAnyOrigin();
    12                 builder.SetIsOriginAllowed(origin => allowedOrigins.Contains(new Uri(origin).Host));
    13             }));
    14             //跨域自定义策略cors
    15             services.AddCors(p => p.AddPolicy("cors", 
    16                 policy => policy.WithOrigins(domains).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin())
    17             );
    18         }    

    结语

     NCF仓库地址:https://github.com/NeuCharFramework/NCF (欢迎Star)

     按照上面的方法可以解决NCF跨域的难题,欢迎大家交流,欢迎Star,欢迎关注

    QQ:365845726 微信:zhao365845726 有兴趣可以加入QQ群: 群号:924439616(ML-Dotnet解决方案)
  • 相关阅读:
    系统振动的稳定性分析
    算法
    九眼智能:信息安全是网络发展的关键
    运用大数据技术筑起网络安全防火墙
    网络安全维护九眼智能大数据显身手
    九眼智能大数据技术助力网络信息安全
    九眼智能:用大数据技术为网络信息加层“滤网”
    大数据如何解决人工智能对文本挖掘的挑战
    “键盘侠”行为规则出台网络信息盼清洁
    灵玖NLPIRParser大数据挖掘系统智能摘要
  • 原文地址:https://www.cnblogs.com/zhao365845726/p/14770861.html
Copyright © 2020-2023  润新知