【发布时间】:2019-09-25 22:10:31
【问题描述】:
我正在使用 django rest 框架作为后端,并尝试使用请求标头中的令牌以 angular 身份验证请求,但 angular 没有发送任何标头值。 我已经尝试了所有向请求添加标头的方法
test(){
//var headers = new HttpHeaders();
//headers.append('Authorization',':Token '+ token);
let token='Token '+'d7dd1e453bae5086e33243b9adca5b63d2d927fb8';
const httpOptions = {
headers: new HttpHeaders({
'Authorization':'Token d7dd1e453bae5086e33243b9adca5b63d2d927fb8',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers':'X-Requested-With'
})
};
console.log(token);
this.http.get('http://localhost:8003/hello/', httpOptions).subscribe(
response=>{console.log(response);}
);
}
访问控制请求标头: 访问控制允许标头、访问控制允许来源、授权、内容类型 访问控制请求方法:GET DNT:1 来源: http://localhost:4001推荐人:http://localhost:4001/
【问题讨论】:
-
所以为了澄清,我们在这里查看 Angular 代码对吗?我认为您的 Angular 应用程序不应该设置
Access-Control-Allow-Origin和Access-Control-Allow-Headers标头。您的服务器应该在OPTIONS或任何GET上返回这些。除此之外,您能否发布来自您的 Angular 应用程序正在检索的服务器的实际响应?似乎您以错误的方式获取了 CORS 标头。 -
我试过没有设置 Access-Control-Allow-Origin、Access-Control-Allow-Headers。它不起作用
-
请尝试阅读我为帮助您而写的全文。这与删除这两个标头无关,而是与您尝试发送内容时服务器给出的完整响应有关。我们谈到的这两个标头不应该添加到客户端,而是添加到服务器上。您的服务器应该告诉客户端可以发送
Authorization标头。您的服务器日志可能会显示类似的内容。
标签: javascript angular typescript django-rest-framework