<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[websocket连接时前后端使用token鉴权导致连接失败的原因]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Mon, 25 Dec 2023 06:28:45 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	前后端通过websocket通信，但是需要鉴权，可以利用websocket的子协议来传输token，代码如下：<br/>var ws = new WebSocket(&quot;ws://localhost/ws&quot;,[token]);<br/>在后面加上[这里是token内容]。这样请求头就会携带：<br/>Sec-WebSocket-Protocol:token value<br/>参数是一个数组。如果数组有多个值，后端也会接受到逗号隔开的值。<br/>后端可以获取这个token进行鉴权。<br/>重点来了！<br/>如果传递了token参数，后端响应的时候，也必须带上这个token响应！否则前端接收不到数据！<br/>我竟然忘记前端传过来的token是加密后的，首先解密后去校验，通过后再把原加密token放在响应头即可， 如果不一致也会导致前端接收不到消息。<br/>如下是java的例子“：<br/>HttpServletResponse response = (HttpServletResponse)servletResponse;<br/>response.setHeader(&quot;Sec-WebSocket-Protocol&quot;, token);
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论] websocket连接时前后端使用token鉴权导致连接失败的原因]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>