我正在尝试使用提取从同一台机器上的React应用程序向我的Spring Boot服务器发送POST请求。我在RestController类中允许使用CrossOrigin。当我使用Opera浏览器时,GET和POST请求都可以正常工作。使用Firefox,我可以使用GET通过GET到React获取数据。但是,当我使用fetch进行POST时,我无法访问服务器,并且Firefox控制台说
TypeError: NetworkError when attempting to fetch resource.
这是我的GET请求代码:
fetch('http://localhost:8080')
.then(response => response.json())
.then(data => this.setState({messages: data, currentUser: data[0].sender, isLoading: false}));
这是POST代码:
fetch('http://localhost:8080', {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({text: this.state.newMessageText, sender: this.state.currentUser})
});
我尝试了删除模式,缓存和标头区域,但无法正常工作。 这是我的服务器类:
package com.ybalcanci.eternalchat.controller;
import com.ybalcanci.eternalchat.model.Message;
import com.ybalcanci.eternalchat.repository.MessageRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/")
@CrossOrigin(origins = {"http://localhost:3000", "http://localhost:5000"})
public class MainController {
@Autowired
private MessageRepository messageRepository;
@PostMapping
public Message newMessage(@RequestBody Message message) {
System.out.println("New Post Request: " + message);
return messageRepository.save(message);
}
@GetMapping
public List<Message> messages(){
return messageRepository.findAll();
}
}