js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to

前端获取后端服务生成JWT,利用js方法base64解码payload段:

window.atob("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIsIm5hbWUiOiLmtYvor5V0ZXN0M-a1i-ivlSIsImV4cCI6MTU3OTUxMTY0OH0");

结果报错:

VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

---------------------------------------------------------------------------

原因就是:编码的字符串中含有“-”或者“_”。正确的base64编码的字符串是:

-----------------------------------------------------------------------------

解决办法(此方法也解决了中文乱码问题):

decodeURIComponent(escape(window.atob(("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIsIm5hbWUiOiLmtYvor5V0ZXN0M-a1i-ivlSIsImV4cCI6MTU3OTUxMTY0OH0").replace(/-/g, "+").replace(/_/g, "/"))));

-------------------------------------------------------------------------------

至于为什么,不在后端修改而跑到前端去replace,我也不是很清楚,我只是参考了官网页面解析JWT的相关js代码:

 

 

错误信息 `Failed to load resource: the server responded with a status of 401` 指示服务器返回的状态码为401,这是一个未授权状态。这意味着浏览器尝试访问资源时收到了安全凭证请求,但由于缺少正确的凭据(如用户名和密码),访问被拒绝。 ### 解决方案: 1. **权限配置**: - 确保服务器端已正确配置了HTTP基本认证(Basic Authentication)。在您的服务器设置中检查 .htaccess 文件或其他相应的服务器配置文件,确保它们包含正确的身份验证规则。 示例 `.htaccess` 配置(适用于 Apache): ```apacheconf AuthType Basic AuthName "Your Site" AuthUserFile /path/to/your/passwords.txt Require valid-user ``` 这里 `/path/to/your/passwords.txt` 应指向包含用户名称和密码的文件路径。确保该文件有适当的权限设置。 2. **检查身份验证规则**: - 确认 .htaccess 或其他服务器配置文件中的规则是否允许匿名访问或特定用户的访问。如果使用的是更复杂的认证机制,比如 OAuth、JWT 或自定义脚本,请确保所有相关的环境变量、证书和其他依赖项都已正确设置并可以正常运行。 3. **查看服务器日志**: - 检查服务器的日志文件,寻找关于此问题的详细错误信息或调试线索。这通常会提供更多的上下文信息帮助定位问题所在。 4. **确认客户端访问权限**: - 有时,问题可能是由于客户端浏览器的安全策略导致的,尤其是在启用了强HTTPS安全性的环境下。确保服务器上的内容也是通过HTTPS提供的,并且客户端浏览器信任服务器颁发的SSL/TLS证书。 5. **修改浏览器设置**: - 如果您只是需要临时绕过认证而直接访问资源,您可以尝试修改浏览器的缓存设置或清除浏览器缓存。某些浏览器允许您更改代理设置以绕过认证,但这通常不是最佳实践并且可能会受到限制。 6. **联系管理员**: - 如果以上步骤都无法解决问题,那么最直接的方式是联系网站的所有者或系统管理员寻求帮助。他们将能访问服务器的后台控制面板并进行必要的调整。 ### 相关问题: 1. **如何配置Apache服务器以启用HTTP基本认证?** 2. **如何解决浏览器因安全策略阻止加载受保护资源的问题?** 3. **在使用JWT进行认证的场景下,遇到401响应时应该采取哪些步骤?**
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值