代码之家  ›  专栏  ›  技术社区  ›  Gaylord.P

Symfony和ReactJS缺少访问控制允许起源/同源错误

  •  1
  • Gaylord.P  · 技术社区  · 4 年前

    我正在尝试从HP Alm的REST API获取一些数据。它与一个小的curl脚本配合得很好。我获取了我的数据。

    现在,使用JavaScript、fetch和ES6(或多或少)似乎是一个更大的问题。我一直收到以下错误消息:

    无法加载Fetch API。飞行前请求没有响应 通过访问控制检查:没有“access control Allow Origin”标头 存在于请求的资源上。原点'http://127.0.0.1:3000'是 因此不允许访问。响应的HTTP状态代码为501。 如果不透明的响应满足您的需求,请将请求的模式设置为 “no cors”无法在禁用cors的情况下获取资源。

    我知道这是因为我试图从本地主机中获取数据,而解决方案应该使用 Cross-Origin Resource Sharing (CORS) 。我以为我真的这么做了,但不知怎么的,它要么忽略了我在标题中写的内容,要么问题出在其他地方。

    那么,是否存在实施问题?我做错了吗?很遗憾,我无法查看服务器日志。我真的有点困在这里了。

    function performSignIn() {
    
      let headers = new Headers();
    
      headers.append('Content-Type', 'application/json');
      headers.append('Accept', 'application/json');
    
      headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
      headers.append('Access-Control-Allow-Credentials', 'true');
    
      headers.append('GET', 'POST', 'OPTIONS');
    
      headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));
    
      fetch(sign_in, {
          //mode: 'no-cors',
          credentials: 'include',
          method: 'POST',
          headers: headers
        })
        .then(response => response.json())
        .then(json => console.log(json))
        .catch(error => console.log('Authorization failed : ' + error.message));
    }
    

    我正在使用Chrome。我也尝试过使用Chrome CORS插件,但后来我收到了另一条错误消息:

    响应中“Access Control Allow Origin”标头的值 当请求的凭据模式为 “include”。原点'http://127.0.0.1:3000因此不允许 通道由发起的请求的凭据模式 XMLHttpRequest由withCredentials属性控制。

    0 回复  |  直到 3 年前