CORS Asp.Net Core 通过 appsetting.json
Posted
技术标签:
【中文标题】CORS Asp.Net Core 通过 appsetting.json【英文标题】:CORS Asp.Net Core through the 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,我尝试了一些东西,但它不起作用......
【问题讨论】:
【参考方案1】:需要在服务器上启用 Cors。因此,如果您调用 x webservice 那么该服务必须启用 cors 支持。您可以在控制器 lebel 上执行此操作,也可以在启动类中更好地执行此操作。请参阅此处了解更多详情。
您不需要创建类和应用设置值。
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2
【讨论】:
我做到了,但我想知道是否有预期的解决方案,通过 appsettings.json 文件...以上是关于CORS Asp.Net Core 通过 appsetting.json的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS/ASP.Net Core 2.1 版本 CORS 错误
根据官方文档,Asp.net Core 3.0 CORS 无法正常工作