【问题标题】:CORS Asp.Net Core through the appsetting.jsonCORS Asp.Net Core 通过 appsetting.json
【发布时间】:2019-07-20 22:38:53
【问题描述】:

这个想法是我正在使用的应用程序 - 当我转发到通过配置文件(例如 appsettings.json)将它们放在一个地方时,它们允许他们更改其中的访问信息。具有将字符串连接到数据库的能力。 我在 appsettings 文件中做这个:

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

在 WithOrigin 中将插入请求的资源、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);
            }

        }

有了这个 CorsServices,我尝试了一些东西,但它不起作用......

【问题讨论】:

    标签: c# asp.net-web-api cors


    【解决方案1】:

    需要在服务器上启用 Cors。因此,如果您调用 x webservice 那么该服务必须启用 cors 支持。您可以在控制器 lebel 上执行此操作,也可以在启动类中更好地执行此操作。请参阅此处了解更多详情。

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

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

    【讨论】:

    • 我做到了,但我想知道是否有预期的解决方案,通过 appsettings.json 文件...
    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2019-08-29
    • 2016-05-02
    • 2020-02-18
    • 2017-07-14
    相关资源
    最近更新 更多