Open ziwei3749 opened 6 years ago
login接口里,后端在response header里返回一个 token_id
而前端需要在AJAX全局拦截器里判断。
如果我本地内存或者cookie里,目前有token_id,那就在ajax之前设置request.header
request.header.set('token_id',‘xxxxx’)
如果本地内存或者cookie没有token_id,那么就在ajax请求之后,从response.header里拿token_id存下来
之后的每次ajax请求,都在request.header里携带这个token_id
原因我们使用CORS跨域,后端需要设置Access-Control-Allow-Header: token_id
后端需要允许token_id这个字段被访问。
这次由于后端忘了修改该字段,导致无法拿到token_id
控制台报错
Failed to load http://10.0.1.10:81/api/yrBackstage/logout: Request header field tid is not allowed by Access-Control-Allow-Headers in preflight response.
其实就是后端的Access-Control-Allow-Headers不允许我传递tid字段
Access-Control-Allow-Headers: content-type,yrb_id
解决方法就是
JWT踩坑跨域问题
使用jtw作为登录验证的整体思路是这样的:
login接口里,后端在response header里返回一个 token_id
而前端需要在AJAX全局拦截器里判断。
如果我本地内存或者cookie里,目前有token_id,那就在ajax之前设置request.header
如果本地内存或者cookie没有token_id,那么就在ajax请求之后,从response.header里拿token_id存下来
之后的每次ajax请求,都在request.header里携带这个token_id
遇到的坑1: 登录时,看到response.header已经返回了token_id,但是通过request.header拿不到token_id字段
原因我们使用CORS跨域,后端需要设置Access-Control-Allow-Header: token_id
后端需要允许token_id这个字段被访问。
这次由于后端忘了修改该字段,导致无法拿到token_id
遇到的坑2: 还是跟CORS有关,
控制台报错
其实就是后端的Access-Control-Allow-Headers不允许我传递tid字段
解决方法就是