在Chrome

时间:2018-04-10 11:05:55

标签: angular google-chrome

我试图在我的GET请求中附加授权令牌以获取用户列表。这是我所做的一系列清单:

我已经看过这个问题here,其中答案提出了几个问题,包括:

直接在请求中设置标题:

    let headers = new HttpHeaders().set('Authorization', 'Token fsadf423qfsadfsda');
    return this.httpClient.get('https/my-url/api/users/', { headers: headers }); 

在拦截器中克隆请求并附加标题:

    let apiUrl = environment.apiUrl;
    const headers = new HttpHeaders({ 'Authorization': 'Token fsadf423qfsadfsda' });
    const apiReq = req.clone({ headers: headers, url: `${apiUrl}${req.url}` });
    return next.handle(apiReq);

上方的最后一点实际上适用于Safari,但不适用于Chrome 。我在Safari中选择了禁用跨域限制,但它确实有效。

在Chrome中我已经安装了CORS Toggle扩展程序并让它运行但它不起作用,也没有从命令行运行Chrome,如下所示:

open -a Google\ Chrome --args --disable-web-security

这是Chrome特定的问题吗?我的版本是版本65.0.3325.181

修改

请求的屏幕截图:

enter image description here

编辑2

关于理解CORS

的好文章

1 个答案:

答案 0 :(得分:1)

由于CORS实施,这是正常的行为。

默认情况下,预检请求不会发送任何自定义标头,例如Authorization

只有在OPTIONS请求之后执行真正的GET请求时才会添加Authorization标头。

要成功执行OPTIONS请求,您需要确保在服务器端正确配置CORS标头

确保您阅读了浏览器的调试器消息,它们通常会告诉您哪些CORS标头丢失/无效