NCF 如何设置接口跨域访问

Posted MartyZane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,欢迎关注

以上是关于NCF 如何设置接口跨域访问的主要内容,如果未能解决你的问题,请参考以下文章

跨域访问方法介绍--使用片段识别符传值

Java设置接口跨域

phpStudy搭建本地后台环境并解决跨域问题

win10的Edge不支持AJAX跨域访问吗?

跨域访问

egg.js 跨域 设置cookie