Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 欢迎页面未使用JWT加载_Javascript_Jquery_Spring Boot_Extjs_Jwt - Fatal编程技术网

Javascript 欢迎页面未使用JWT加载

Javascript 欢迎页面未使用JWT加载,javascript,jquery,spring-boot,extjs,jwt,Javascript,Jquery,Spring Boot,Extjs,Jwt,我将SpringBoot与ExtJS一起使用,带有一个/login页面,这是一个带有一些jQueryJavaScript的普通JSP。我正在尝试集成JWT以保护我的数据API。使用我可以找到的实现JWT的方法,我实现了一个JWTRequestFilter,并从SpringSecurity中删除了内置的登录流 我的登录表单现在向/authenticate方法发出$ajax POST请求,该方法在响应中返回一个令牌。当我在Postman中手动设置身份验证头并为/welcome页面发出GET请求时,我

我将SpringBoot与ExtJS一起使用,带有一个/login页面,这是一个带有一些jQueryJavaScript的普通JSP。我正在尝试集成JWT以保护我的数据API。使用我可以找到的实现JWT的方法,我实现了一个JWTRequestFilter,并从SpringSecurity中删除了内置的登录流

我的登录表单现在向/authenticate方法发出$ajax POST请求,该方法在响应中返回一个令牌。当我在Postman中手动设置身份验证头并为/welcome页面发出GET请求时,我得到了一个有效的响应

下面的代码是我如何尝试使用令牌更新标题并获取/welcome页面。我收到401个错误,因为当我尝试使用此代码访问页面时,身份验证标头丢失

$form.on('submit', function(e) {
    e.preventDefault(); 
    $.ajax({  
      url: $form.attr('action'), 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json',
      data: JSON.stringify(dat), 
      success: function(result) {
  
        var d = new Date();
        d.setTime(d.getTime() + (3*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        
    //  $('head').append('<meta name="Authorization" content="Bearer ' + result.token + '"');
        window.localStorage.setItem("Authorization", "Bearer " + result.token);
    //    document.cookie = "Authorization=Bearer "+result.token + ";" + expires + ";path=/;httpOnly"; 
        window.location="/welcome";
}  error: funciton() {}
);
$form.on('submit',函数(e){
e、 预防默认值();
$.ajax({
url:$form.attr('action'),
键入:“POST”,
数据类型:“json”,
contentType:'应用程序/json',
数据:JSON.stringify(dat),
成功:功能(结果){
var d=新日期();
d、 设置时间(d.getTime()+(3*24*60*60*1000));
var expires=“expires=“+d.toutString();

//$('head')。append('p>您没有以正确的方式添加标题。要添加标题,您需要使用
beforeSend()

发送前:函数(xhr){
xhr.setRequestHeader(“授权”、“承载人”+JWT);
},

需要发送此选项。此外,
JWT
这里表示JWT,令牌和
xhr
XMLHttpRequest
原始对象。此选项应发送到
$.ajax()
的参数。

这是否适用于所有ajax请求或其他请求?如果我配置XMLHttpRequest对象,当它尝试调用window.location???@ItGrunt时,是否仍会应用标头?这将仅影响参数传递到的特定ajax调用函数。对于所有请求,也可以使用方法执行。我的回答只影响我们正在讨论的特定请求。而不是其他所有内容。如果您使用
window.location
,这不是AJAX调用,一个没有任何标题的普通GET请求,因此不会。感谢您的响应…那么是否可以使用xhr对象重新加载整个页面、脚本、css和所有内容?我只看到它在我n过去将数据从微服务加载到DOM@ItGrunt但是在GET请求中,通常情况下,绝对不可能发送身份验证头。但是对于JavaScript,是的,对于微服务,它们使用一种特殊的加载方法,我不确定名称,我也看到过这种方式。但是在正常的GET请求中,这是不可能的任务,并且绝对不使用
窗口。位置