[英]Are there any security concerns storing HTTP Basic authorization header in localStorage?
[英]Basic HTTP authorization header
我想使用客户端上的JQuery和服务器端上的Node.js设置基本的HTTP身份验证。 我已在服务器端发出以下Ajax请求以设置标头:
$.ajax({
type: "GET",
url: URL_SLACK_SERVER,
dataType: "json",
beforeSend: function(xhr){
xhr.setRequestHeader("Authorization", "Basic " +btoa("username:xxx") );
},
success:function(rsp){
filterMessages(rsp);
}
});
我想在我的服务器端使用basic-auth模块使用:
var express = require('express');
var bodyParser = require('body-parser');
var auth = require('basic-auth');
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Authorization, Accept, Key");
var cre = +auth(req);
console.log('Auth: ' +cre.username);
next();
});
但是,这样做会遇到一些问题:
选项/ server HTTP / 1.1
主机:server.com
连接:保持活动状态
访问控制请求方法:GET
来源:null
用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_1)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 47.0.2526.111 Safari / 537.36
访问控制请求标头:接受,授权
接受: /
接受编码:gzip,deflate,sdch
接受语言:en-US,en; q = 0.8,fr; q = 0.6
请求标头字段在飞行前响应中,Access-Control-Allow-Headers不允许进行授权。
另外,请注意,从客户端到服务器的调用是跨域调用,这就是为什么在Node.js文件上写入这些设置标头的原因。
如何有效执行此基本HTTP身份验证?
由于您的客户端和服务器在不同的域上运行,因此您需要在服务器中配置CORS标头以使其工作。
您需要在服务器中设置标题"Access-Control-Allow-Origin:http://foo.example"
或"Access-Control-Allow-Origin:*"
。
是的,这是一个核心问题。 在npm中启用cors(查找cors模块并通过npm附加它)时,您可以设置允许的特定域。 设置此选项后,基本身份验证标头将与请求一起发送。 查看此请求: https : //stackoverflow.com/a/18511690/3232739
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.