Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用模式时:请求无cors,浏览器为’;t添加请求头I’;我已设置了前端代码_Javascript_Reactjs_Cors_Fetch Api - Fatal编程技术网

Javascript 使用模式时:请求无cors,浏览器为’;t添加请求头I’;我已设置了前端代码

Javascript 使用模式时:请求无cors,浏览器为’;t添加请求头I’;我已设置了前端代码,javascript,reactjs,cors,fetch-api,Javascript,Reactjs,Cors,Fetch Api,在我的React应用程序中,我有以下API帖子,允许用户编辑他们的个人资料(姓名和图像) 上面的问题是带有授权令牌的标头没有在POST中发送 如何获取要在上述获取请求中发送的授权标头 仅供参考,对于非多部分表单,授权令牌成功发送,如下所示: static loadProfile(user_id) { const request = new Request(`http://localhost:4300/api/v1/profiles/${user_id}`, { heade

在我的React应用程序中,我有以下API帖子,允许用户编辑他们的个人资料(姓名和图像)

上面的问题是带有授权令牌的标头没有在POST中发送

如何获取要在上述获取请求中发送的授权标头

仅供参考,对于非多部分表单,授权令牌成功发送,如下所示:

  static loadProfile(user_id) {
    const request = new Request(`http://localhost:4300/api/v1/profiles/${user_id}`, {
      headers: new Headers({
        'Authorization': getBearerToken(),
        'Accept'       : 'application/json',
        'Content-Type' : 'application/json',
      })
    });

    return fetch(request).then(response => {
      return response.json();
    }).catch(error => {
      return error;
    });
  }

如果您想设置任何特殊的请求头,您不能使用
模式:“no cors”
,因为将其用于请求的效果之一是它告诉浏览器不允许您的前端JavaScript代码设置任何请求头,而不是。见:

要将名称/值(名称/值)对附加到
标题
对象(标题),请运行以下步骤:

  • 否则,如果guard为“
    请求无cors
    ”且名称/值不是a,则返回
  • 在该算法中,
    return
    等同于“返回而不将该头添加到Headers对象”

    Authorization
    不是授权,因此如果您对请求使用
    模式:“no cors”
    ,浏览器将不允许您进行设置。内容类型相同:application/json


    如果您尝试使用
    模式的原因是:“无cors”
    是为了避免在不使用时出现其他问题,那么解决方案是修复其他问题的根本原因。因为一般来说,无论您试图解决什么问题,
    模式:“no cors”
    最终都不会成为解决方案。它只会产生不同的问题,比如你现在遇到的问题。

    通过使用下面的代码,你可以通过授权或承载来发出获取请求

        var url = "https://yourUrl";
        var bearer = 'Bearer '+ bearer_token;
        fetch(url, {
        method: 'GET',
        withCredentials: true,
        credentials: 'include',
        headers: {
            'Authorization': bearer,
            'X-FP-API-KEY': 'iphone',
            'Content-Type': 'application/json'}
        }).then((responseJson) => {
            var items = JSON.parse(responseJson._bodyInit);
        })
        .catch(error => this.setState({
        isLoading: false,
        message: 'Something bad happened ' + error
        }));
    

    我是否可以重新启用cors,然后将标题与多部分表单数据一起发送?是的,您应该能够删除
    模式:“无cors”
    ,然后发出请求。如果您这样做时会收到一些不同的错误消息,那么您可能希望更新您的问题,以包括在没有
    模式的情况下收到的任何其他错误消息:“no cors”
    ,然后我们可以尝试找到该问题的解决方案。
        var url = "https://yourUrl";
        var bearer = 'Bearer '+ bearer_token;
        fetch(url, {
        method: 'GET',
        withCredentials: true,
        credentials: 'include',
        headers: {
            'Authorization': bearer,
            'X-FP-API-KEY': 'iphone',
            'Content-Type': 'application/json'}
        }).then((responseJson) => {
            var items = JSON.parse(responseJson._bodyInit);
        })
        .catch(error => this.setState({
        isLoading: false,
        message: 'Something bad happened ' + error
        }));