我试图在我的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
修改
请求的屏幕截图:
编辑2
关于理解CORS
的好文章答案 0 :(得分:1)
由于CORS实施,这是正常的行为。
默认情况下,预检请求不会发送任何自定义标头,例如Authorization
。
只有在OPTIONS请求之后执行真正的GET请求时才会添加Authorization
标头。
要成功执行OPTIONS请求,您需要确保在服务器端正确配置CORS标头
确保您阅读了浏览器的调试器消息,它们通常会告诉您哪些CORS标头丢失/无效