Naw*_*Sen 8 java cookies spring-security spring-boot angular
我正在使用带有 angular 6 的 spring security。当我使用基本身份验证服务器登录时,会发送一个带有响应的 cookie JessionID。我想将此 cookie 与其他身份验证请求一起发送,但它给了我错误Refused to set unsafe header 'Cookie'。当我在邮件头中使用相同的 cookie 从邮递员访问相同的端点时,它可以工作。
以下是角度的方法:
注意:目前我正在手动添加标题。
private heroesUrl = 'http://localhost:8080/hi';
header = new HttpHeaders().set("Cookie", "JSESSIONID=A2A75EC9A3E1172D60060C6E708549B5");
getMessage() :Observable<Message>{
return this.http.get<Message>(this.heroesUrl,{headers:this.header});
}
Run Code Online (Sandbox Code Playgroud)
我使用基本身份验证登录时得到的响应
Rez*_*adi 12
你不能这样做,因为浏览器不允许你这样做。让我在这里描述问题:
您是否注意到Set-Cookie: JSESSIONID=......; Path=/; HttpOnly响应标头中的 ?好吧,问题是HttpOnly标志。实际上 :) 这不是问题,它是一项功能,可防止旨在窃取浏览器 cookie 的攻击:
HttpOnly是添加到 cookie 的标志,它告诉浏览器不要通过客户端脚本(document.cookie 和其他脚本)显示 cookie。...当您使用 HttpOnly 标志设置 cookie 时,它会通知浏览器此特殊 cookie 只能由服务器访问
所以浏览器不允许任何 javascript 代码访问这个变量。如果您可以更改该值,那么它就不再是HttpOnly标记的 cookie 了:)
如果你想通过javascript发送这个cookie,你应该通过Authorizationheader发送它并在Java服务器中编写中间件,以便它从Authorizationheader中捕获这些值并将它们视为JSESSIONID cookie。没有更多的选择给你:)
| 归档时间: |
|
| 查看次数: |
16593 次 |
| 最近记录: |