繁体   English   中英

通过appsetting.json的CORS Asp.Net Core

[英]CORS Asp.Net Core through the appsetting.json

这个想法是我正在使用的应用程序-当我向前通过配置文件(例如appsettings.json)要求它们在一个地方时,允许他们更改其中的访问信息。 作为具有将字符串连接到数据库的功能。 我在appsetings文件中创建此文件:

 "CORSConfiguration": {
    "WithOrigin": "",
    "WithMethod": "*",
    "WithHeader": "*",
    "WithCredentials": "*"
  },

在WithOrigin中,thay将插入请求的资源,WithMethod请求的方法等。然后创建接口:

public interface ICORSConfiguration
    {
        List<string> WithOrigin { get; set; }
        List<string> WithMethod { get; set; }
        List<string> WithHeader { get; set; }
        List<string> WithCredentials { get; set; }
    }

然后,我创建继承该接口的类:

public class CORSConfiguration: ICORSConfiguration
{
   public List<string> WithOrigin { get; set; }
   public List<string> WithMethod { get; set; }
   public List<string> WithHeader { get; set; }
   public List<string> WithCredentials { get; set; }
}

您对如何执行此操作有任何建议吗?这里有什么可能...? 我如何在控制器中安装这些控件...我不知道如何完成此操作。 对于仅具有Mail方法发送电子邮件的REST应用程序,我需要此功能。 该方法如下所示:

[HttpPost("send")]
        public void Send(EmailMessage emailMessage)
        {

            var message = new MimeMessage();
            message.From.Add(new MailboxAddress(emailMessage.Email, emailMessage.Name));
            message.To.AddRange(emailMessage.To.Select(c => new MailboxAddress(c.Email)));
            message.Cc.AddRange(emailMessage.Cc.Select(c => new MailboxAddress(c.Email)));
            message.Bcc.AddRange(emailMessage.Bcc.Select(c => new MailboxAddress(c.Email)));

            message.Subject = emailMessage.Subject;

            message.Body = new TextPart(TextFormat.Html)
            {
                Text = emailMessage.Message
            };
            CorsService corsService = new CorsService();
            corsService.setAllowedOrigins(new HashSet(Array.("*")));

            //_corsConfiguration.WithHeader
            //_corsConfiguration.WithMethod;

            using (var emailClient = new MailKit.Net.Smtp.SmtpClient())
            {
                //emailClient.Connect(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, true);
                emailClient.Connect("smtp.gmail.com", 465);
                //emailClient.Connect("smtp.gmail.com", 587, MailKit.Security.SecureSocketOptions.SslOnConnect);
                emailClient.AuthenticationMechanisms.Remove("XOAUTH2");
                emailClient.Authenticate(_emailConfiguration.SmtpUsername, _emailConfiguration.SmtpPassword);
                //emailClient.
                emailClient.Send(message);
                emailClient.Disconnect(true);
            }

        }

借助此CorsService,我尝试了一些不起作用的方法...

需要在服务器上启用Cors。 因此,如果您致电x webservice,则该服务必须启用cors支持。 您可以在controller lebel上执行此操作,也可以在启动类上执行此操作。 有关更多详细信息,请参见此处。

您无需创建类和应用设置值。

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM