首页 > 解决方案 > TypeError:尝试在 Firefox 中的 POST 期间获取资源时出现 NetworkError

问题描述

我正在尝试使用 fetch 从同一台机器上的 React 应用程序向我的 Spring Boot 服务器发送 POST 请求。我允许我的 RestController 类中的 CrossOrigin。当我使用 Opera 浏览器时,GET 和 POST 请求都可以正常工作。使用 Firefox,我可以通过 GET 获取数据以使用 fetch 进行 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();
    }
}

标签: reactjsspring-bootfirefoxhttprequestfetch

解决方案


推荐阅读