在springboot邮件API中启用CORS

编程入门 行业动态 更新时间:2024-10-11 07:33:55
本文介绍了在springboot邮件API中启用CORS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我可以轻松地发送springboot API和reactjs应用进行邮件提取. 托管在nginx服务器中. React应用程序在本地主机上运行良好,通过电子邮件发送所有okei信息,但是如果我在服务器上运行,则会出现错误.

I have easy mail sending springboot API and reactjs app for fetch. Hosted in nginx server. React app running well localhost, email working everything okei but if I run on a server it gives an error.

我尝试添加其他Nginx服务器设置并添加Springboot @CrossOrigin(origins = "xx.xxx.xxx.xxx/"),但到目前为止没有找到任何帮助. 如果我部署到服务器,必须在哪里允许CORS?

I have tried to add different Nginx server settings and add Springboot @CrossOrigin(origins = "xx.xxx.xxx.xxx/") but have not found any help so far. Where do I have to allow CORS if I deploy to server?

Nginx服务器默认值:

server { listen 80 default_server; root /var/www/name/build; server_name xx.xxx.xxx.xxx; index index.html index.htm; location / { } }

Springboot:

@PostMapping public void sendFeedback(@RequestBody Feedback feedback, BindingResult bindingResult){ if(bindingResult.hasErrors()){ throw new ValidationException("Feedback is not valid"); } // Create a mail sender JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); Properties props = mailSender.getJavaMailProperties(); mailSender.setHost(this.emailCfg.getHost()); mailSender.setPort(this.emailCfg.getPort()); mailSender.setUsername(this.emailCfg.getUsername()); mailSender.setPassword(this.emailCfg.getPassword()); // Create an email instance SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom(feedback.getEmail()); mailMessage.setTo("test@gmail"); mailMessage.setSubject("Testing mail"); mailMessage.setText(feedback.getFeedback()); mailSender.send(mailMessage); }

我拥有的Reactjs代码:

fetch(url,{ method: 'POST', headers:{ 'Content-Type': 'application/json' }, body: JSON.stringify(state) }).then(response =>{ console.log(data) }).catch(error =>{ console.log(error) })

输出:

Access to fetch at 'xx.xxx.xxx.xxx:8080/feedback-0.0.1-SNAPSHOT' from origin 'xx.xxx.xxx.xxx' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

推荐答案

添加CORS配置,如下所示:

Add a CORS config as below :

@Configuration public class CORSConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD"); } }

或 取消您的控制器

@CrossOrigin @PostMapping public void sendFeedback(@RequestBody Feedback feedback, BindingResult bindingResult){ if(bindingResult.hasErrors()){ throw new ValidationException("Feedback is not valid"); } // Create a mail sender JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); Properties props = mailSender.getJavaMailProperties(); mailSender.setHost(this.emailCfg.getHost()); mailSender.setPort(this.emailCfg.getPort()); mailSender.setUsername(this.emailCfg.getUsername()); mailSender.setPassword(this.emailCfg.getPassword()); // Create an email instance SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom(feedback.getEmail()); mailMessage.setTo("test@gmail"); mailMessage.setSubject("Testing mail"); mailMessage.setText(feedback.getFeedback()); mailSender.send(mailMessage); }

更多推荐

在springboot邮件API中启用CORS

本文发布于:2023-10-30 04:53:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1541826.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:邮件   springboot   CORS   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!