首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fetch:无法加载资源: net::ERR_EMPTY_RESPONSE (但对于大多数用户来说,它可以工作)

fetch:无法加载资源: net::ERR_EMPTY_RESPONSE (但对于大多数用户来说,它可以工作)
EN

Stack Overflow用户
提问于 2021-06-02 00:03:03
回答 1查看 98关注 0票数 0

我正在使用React组件中的fetch进行请求。对于绝大多数用户来说,它工作得很好,但有一位用户报告了以下错误:

代码语言:javascript
运行
复制
Failed to load resource: net::ERR_EMPTY_RESPONSE 
TypeError: Failed to fetch

不过,看起来类似的请求也在为他们工作。这来自Edge,但他们说Chrome也有同样的问题。

这是一个同源请求,所以我确信它不会是CORS问题。这种情况会不会是由广告拦截程序或防火墙设置引起的?

生成获取请求的代码(可能不相关):

代码语言:javascript
运行
复制
function fetchWrapper(url, data, options, noModals) {
    var body;
    if (data instanceof FormData) {
        body = data;
    } elseif (data !== null) {
        body = JSON.stringify(data);
    }
    options.body = body;
    if (!options.method) {
        options.method = "POST";
    }

    return fetch(url, options).then(response => {
        if (!response.ok) {
            return response.json().then(json => {
                var error = (json && json.error) || response.statusText;
                var message = "";
                if (json.error && errors[json.error]) {
                    error = errors[json.error];
                }
                if (json.error && messages[json.error]) {
                    message = messages[json.error];
                }
                // Bad request - show the error message to the user
                if (response.status >= 400 && response.status < 500) {
                    return handleError(noModals, error, message);
                } else { // server error
                    error = errors.wrong;
                    message = messages.wrong;

                    return handleError(noModals, error, message, json ? json.error : "Unknown error");
                }
            })
        }
        return response.json().then(json => {
            // the response returned a success code but there is an error message
            if (json.error) {
                return handleError(noModals, json.error);
            }
            return json;
        });
    }).catch(reason => { // JavaScript or network error
        console.log(reason); // this is where the TypeError is printed
        // not showing an error to the user
    });
}

至于服务器代码,它是一个PHP后端,但我看不出有任何理由它会返回一个空响应。即使作为该用户登录并重复他们的操作,我也无法重现该问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 00:12:02

您可以尝试使用名为axios的npm包。使用这个包,您可以轻松地创建一个请求。

代码语言:javascript
运行
复制
import axios from 'axios';

const response = axios.get('[url]');

只需将ulr替换为您想要请求的url,数据将存储在response变量中。

如果这不起作用,您可以尝试使用await axios进行异步请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67792313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档