zoukankan      html  css  js  c++  java
  • 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解决方案)
  • 相关阅读:
    kill新号专题
    LSB 简介
    linux之eval用法(高级bash程序员的必修之技)
    squid日志配置与轮询
    004_ssh连接慢的问题的解决?
    python操作redis-set
    python操作 redis-list
    python操作redis-hash
    python操作redis--string
    python连接redis002
  • 原文地址:https://www.cnblogs.com/zhao365845726/p/14770861.html
Copyright © 2011-2022 走看看