首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJs没有Authorization头

ReactJs没有Authorization头
EN

Stack Overflow用户
提问于 2019-03-01 10:28:33
回答 5查看 3K关注 0票数 2

我正在尝试使用reactjs获取从api调用返回的json数据。1.我尝试在fiddler上使用有效的持有者令牌运行url,它给出了正确的结果。2.我尝试在下面的fetch调用中使用相同的url,并在react代码中使用相同的fiddler生成的承载令牌。

它抛出401未授权错误。

我比较了tab AUTH下的第1点和第2点的fiddler请求。一个有正确的持有者令牌,但第二个,即react代码显示“没有Authorization Header is present”。我在react代码中发送令牌,但是为什么它显示"No Authorization Header is present“?

代码语言:javascript
复制
componentDidMount () {
  const url = 'my reallyworking api url on fiddler';
  fetch(url
    , {
      method: 'POST',
      crossDomain: true,
      mode: 'no-cors',
      headers: new Headers({
        'Authorization': 'Bearer ' + 'token generated from fiddler after running auth',
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      })
    }
  )
    .then(res => res.json())
    .then(
      (result) => {
        alert('success');
        this.setState({
          isLoaded: true,
          gridData: result.items
        });
      },
      (error) => {
        this.setState({
          isLoaded: true,
          error
        });
      }
    );
}

Fiddler没有显示任何标题。下面是我的小提琴手跟踪

代码语言:javascript
复制
POST https://myurl HTTP/1.1
Host: myHost
Connection: keep-alive
Content-Length: 0
accept: application/json
Origin: https://localhost:xyz
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Referer: https://localhost:xyz/testfetch
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

注意: 1.我创建了一个headers对象headers: new Headers({'content-type':‘here /json’}),正如here所解释的那样2.我没有使用与所解释的Headers同构的fetch

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-03-06 14:13:02

尝试检查Postman中的接口。这将向您显示详细的请求和响应。

票数 4
EN

Stack Overflow用户

发布于 2019-03-04 11:11:23

Headers对象也有一个关联的防护,它的值是不可变的。为什么使用没有body的POST?编辑您的fetch函数,如下所示:

代码语言:javascript
复制
fetch(url, {
   method: 'POST',
   crossDomain: true,
   mode: 'no-cors',
   body: JSON.stringify({// you data here})
   headers: {
     'Authorization': 'Bearer ' + 'token generated from fiddler after running auth',
     'Accept': 'application/json',
     'Content-Type': 'application/json'
   }
})
  .then(response => response.json())
  .then(responseJson => {
   // do somethign here...
   }
票数 3
EN

Stack Overflow用户

发布于 2019-03-07 15:19:22

首先,我没有找到选项"crossDomain“是什么意思,official documentation不包含这样的选项。Secon -我会尝试向本地测试服务器发出这样的身份验证请求,并检查是否包含所有必要的数据,此外,还可以在devTools的网络选项卡中进行检查。当您看到request出了什么问题时,您可以进行后续步骤,首先执行一个简单的auth请求,而不需要额外的选项。

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

https://stackoverflow.com/questions/54937128

复制
相关文章

相似问题

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