我正在开发一个应该使用django rest框架后端的Emberjs前端。我刚刚开始使用JWT / Javascript Web令牌进行身份验证。
这就是我所做的:
我现在看到的问题如下:
后端不允许使用这些标头,我找不到此请求的来源,也不知道它们的含义应该/可能是什么。
同样,这是Firefox的OPTIONS请求的一部分:
Access-Control-Request-Headers: 0,1,2,3,4,content-type
这来自Chrome:
Access-Control-Request-Headers: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, accept, content-type
我的问题:为什么要求包含这些数字标题?它们来自哪里(ember?浏览器本身?)它们是什么意思?而且,理想情况下,我该如何摆脱它们?
答案 0 :(得分:0)
我弄明白问题是什么。我将ember-simple-auth's readme中使用Oauth2进行身份验证的代码与ember-simple-auth-token's approach混合在一起。
对于Oauth2,自述文件建议将凭证解压缩为两个变量并将其传递给authenticate函数:
let { identification, password } = this.getProperties('identification', 'password');
this.get('session').authenticate('authenticator:oauth2', identification, password).catch((reason) => {
this.set('errorMessage', reason.error || reason);
});
而令牌版本不解包凭证:
var credentials = this.getProperties('identification', 'password'),
authenticator = 'authenticator:jwt';
this.get('session').authenticate(authenticator, credentials);
事实证明,jwt身份验证器的身份验证功能最多需要三个参数,第三个是头。我混合代码的方式导致我的密码由于某种原因被分解为数值。在我发布的firefox片段中,我使用了不同的密码,这就是为什么值只变为4而不是9。
通过不解包凭证预检成功。