Reactjs应用程序无法使用https请求到达我的Spring Boot后端[已解决]

时间:2019-06-27 10:30:12

标签: reactjs rest spring-boot post https

我有一个运行在https://localhost:8080上的ReactJS应用程序,我想将数据发布到运行在https://localhost:8443上的Spring Boot后端应用程序中,但是当我尝试发布数据时。我的浏览器控制台:

TypeError:“尝试获取资源时出现NetworkError。” 跨域请求被阻止:同源策略禁止读取https://localhost:8443/api/ ...上的远程资源(原因:CORS请求未成功)。

我的Spring Boot应用程序未使用Spring Security。我通过this教程启用了HTTPS。我使用HTTPS=true npm start运行ReactJS应用程序,并更改了package.json中的"start": "PORT=8080 react-scripts start"之类的React应用程序端口

这是我的application.properties:

server.ssl.key-store-password = password
server.ssl.key-store-type = PKCS12
server.ssl.key-alias = tomcat
server.ssl.enabled=true

这是尝试从React调用REST API的方法:

fetch('https://localhost:8443/api/..., {
            method: 'POST'
        }).then((data) => {
            if (data.ok) {
                this.setState({ 
                response: data })
            }
        })
        .catch(console.log);

这是我的@RestController:

@RestController
@RequestMapping("/api")
public class MessageReceiverResource {

    @CrossOrigin(origins = "https://localhost:8080")
    @PostMapping
    public Response receiveMessages(@RequestBody Request request){
           ...
        return response;
    }
}

在启用HTTPS之前,此解决方案都可以正常工作。

1 个答案:

答案 0 :(得分:0)

解决方案是将以下行添加到package.json:"proxy": "https://localhost:8443",