Ril*_*y P 6 authentication cors express angularjs
任何人都可以告诉我为什么我的'WWW-Authenticate'标题在响应中为空,尽管我能够在Chrome开发工具中看到字符串化的'WWW-Authenticate'标题对象?
在服务器端,我正在执行以下操作来设置我的WWW-Authenticate标头以及为CORS设置正确的标头:
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
res.setHeader('Access-Control-Expose-Headers', 'WWW-Authenticate');
res.setHeader('WWW-Authenticate', JSON.stringify({
    "token": "encryptedToken", 
    "message": "encryptedMessage"
}));
我相信我正在服务器端正确设置标头,因为当我查看Chrome开发工具时,我会在"响应标头"下看到正在进行的请求的以下内容.
响应标头
Access-Control-Allow-Origin:http:// localhost:8080 
Access-Control-Expose-Headers:WWW-Authenticate 
Connection:keep-alive 
日期:2015年5月15日星期五13:48:29 GMT 
ETag:W/"f7-1470611871" 
WWW-Authenticate:{"token":"encryptedToken","message":"encryptedMessage"} 
X-Powered-By:Express
但是,当我尝试从响应中访问"WWW-Authenticate"标头时,我得到NULL.
$http.get("http://localhost:4242/days")
.then(function (response) {
    var AuthHeader = response.headers('WWW-Authenticate');
    console.log (AuthHeader); // returns null
})
提前谢谢你的帮助!
好吧……经过一番尝试和错误,我们已经解决了这个问题。我虽然认为预先挂起的 X- 到自定义标头是一个过时且不必要的参数,但是看来在这种情况下使用的浏览器或者 Angular 本身都在期待它。
更改标题名称:
WWW-authenticate
到
X-WWW-authenticate
解决问题。如果有人可以阐明这一点,请这样做。
事实上,在这里引用第一个答案:自定义 HTTP 标头:使用 X- 的命名约定已被弃用,实际上标头应该只是“合理命名”,没有任何前缀。也许考虑重命名为:
appName-authenticate
或类似的最佳实践。
| 归档时间: | 
 | 
| 查看次数: | 1547 次 | 
| 最近记录: |