【问题标题】:React fetch changing request url and breaking request / never reaching server反应获取更改请求 url 和中断请求/永远不会到达服务器
【发布时间】:2020-09-09 00:09:47
【问题描述】:

我正在尝试像这样使用 fetch 将 Authorization 标头注入到我的 get 请求中:

        const req = fetch({
            headers: req_headers,
            method: "GET",
            url: req_url,                
        })

当我这样做时,我会从服务器获得实际响应(未经授权)

        const req = fetch(req_url)

但是当我以第一种方式执行时,检查响应值,我看到了:

        {
             //...
             url: "http://localhost:3000/[object%20Object]"
        } 

什么时候应该说:

        {
             //...
             url: req_url
        } 

我得到了通用的反应错误响应消息/页面:

You need to enable JavaScript to run this app.

这是从我的开发服务器而不是我请求的 url 提供的,它也立即提供。

为什么当我发送此请求时 React/fetch 甚至没有尝试联系我的服务器,我该如何解决?

谢谢。

【问题讨论】:

  • req_url 中有什么内容?

标签: javascript reactjs fetch


【解决方案1】:

尝试像这样执行获取请求:

const headers = new Headers();
headers.append('example', 'some_value');

const requestInfo = {
    method: 'GET',
    headers,
  };

const req = fetch(req_url, requestInfo);

查看this documentations 关于获取。有一整节关于 Header 可以帮助你。

【讨论】:

    【解决方案2】:

    Fetch 如您在文档中看到的,可以采用 url 和 configurationObj 2 个参数。

    Syntax

    const fetchResponsePromise = fetch(resource [, init])
    

    所以你的代码应该是这样的:

    const reqConfiguration = {
     headers: req_headers,
     method: "GET",
     body: JSON.stringify({somethingHere})
    }
    
    //here is passing the second argument
    const req = fetch(req_url, reqConfiguration)
    
    

    我希望这篇文章可以帮助你调试你的问题。

    【讨论】:

      【解决方案3】:

      您需要在做出更改后重新构建(运行构建)react 项目,否则这些更改将不会在您重新运行服务器时反映出来;因此,为什么您仍然看到“http://localhost:3000”...而不是“req_url”。 干杯。

      【讨论】:

        猜你喜欢
        • 2020-03-26
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        相关资源
        最近更新 更多