Я пытаюсь отправить запрос POST на мой сервер Spring Boot из приложения React на той же машине, используя fetch. Я разрешил CrossOrigin из моего класса RestController. И запросы GET, и POST работают нормально, когда я использую браузер Opera. Используя Firefox, я могу получить данные через GET для React с использованием fetch. Но когда я использую 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();
}
}