﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-willpower88-随笔分类-Golang</title><link>http://www.blogjava.net/willpower88/category/55345.html</link><description>对JAVA有点理解了……</description><language>zh-cn</language><lastBuildDate>Wed, 07 Feb 2024 01:39:26 GMT</lastBuildDate><pubDate>Wed, 07 Feb 2024 01:39:26 GMT</pubDate><ttl>60</ttl><item><title>gland debug.  Got a connection, launched process </title><link>http://www.blogjava.net/willpower88/archive/2024/02/04/451359.html</link><dc:creator>一凡</dc:creator><author>一凡</author><pubDate>Sun, 04 Feb 2024 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/willpower88/archive/2024/02/04/451359.html</guid><wfw:comment>http://www.blogjava.net/willpower88/comments/451359.html</wfw:comment><comments>http://www.blogjava.net/willpower88/archive/2024/02/04/451359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/willpower88/comments/commentRss/451359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/willpower88/services/trackbacks/451359.html</trackback:ping><description><![CDATA[此问题是由于升级 macos sonoma 14.2.1 引起的<br />解决办法，重新安装xcode&nbsp;&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">rm&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rf&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">Library</span><span style="color: #000000; ">/</span><span style="color: #000000; ">Developer</span><span style="color: #000000; ">/</span><span style="color: #000000; ">CommandLineTools<br />xcode</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">select</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">install</span></div><img src ="http://www.blogjava.net/willpower88/aggbug/451359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/willpower88/" target="_blank">一凡</a> 2024-02-04 13:57 <a href="http://www.blogjava.net/willpower88/archive/2024/02/04/451359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gin跨域</title><link>http://www.blogjava.net/willpower88/archive/2019/12/26/434991.html</link><dc:creator>一凡</dc:creator><author>一凡</author><pubDate>Thu, 26 Dec 2019 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/willpower88/archive/2019/12/26/434991.html</guid><wfw:comment>http://www.blogjava.net/willpower88/comments/434991.html</wfw:comment><comments>http://www.blogjava.net/willpower88/archive/2019/12/26/434991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/willpower88/comments/commentRss/434991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/willpower88/services/trackbacks/434991.html</trackback:ping><description><![CDATA[<ol><li>新增中间件cors</li><pre style="background-color:#0f111a;color:#c3cee3;font-family:'Menlo';font-size:11.3pt;"><pre style="font-family: Menlo; font-size: 11.3pt;"><span style="color:#c792ea;font-style:italic;">func </span><span style="color:#808080;">Cors</span><span style="color:#89ddff;">() </span><span style="color:#808080;">gin</span><span style="color:#89ddff;">.</span><span style="color:#808080;">HandlerFunc </span><span style="color:#89ddff;">{<br /></span> <span style="color:#c792ea;font-style:italic;">return func</span><span style="color:#89ddff;">(</span><span style="color:#808080;">c </span><span style="color:#89ddff;">*</span><span style="color:#808080;">gin</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Context</span><span style="color:#89ddff;">) {<br /></span> <span style="color:#808080;">method </span><span style="color:#89ddff;">:= </span><span style="color:#808080;">c</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Request</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Method<br /></span><span style="color:#808080;"><br /></span><span style="color:#808080;">      c</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Header</span><span style="color:#89ddff;">(</span><span style="color:#c3e88d;">"Access-Control-Allow-Origin"</span><span style="color:#89ddff;">, </span><span style="color:#c3e88d;">"*"</span><span style="color:#89ddff;">)   </span><span style="color:#717cb4;font-style:italic;">//必选<br /></span> &nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#808080;">c</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Header</span><span style="color:#89ddff;">(</span><span style="color:#c3e88d;">"Access-Control-Allow-Headers"</span><span style="color:#89ddff;">, </span><span style="color:#c3e88d;">"*"</span><span style="color:#89ddff;">)  </span><span style="color:#717cb4;font-style:italic;">//可选  如果request有header, 必选<br /></span><span style="color:#717cb4;font-style:italic;">&nbsp;&nbsp;&nbsp;&nbsp;  //c.Header("Access-Control-Allow-Credentials", "true")  //可选<br /></span><span style="color:#717cb4;font-style:italic;">      //c.Header("Access-Control-Allow-Methods", "*")  //可选<br /></span><span style="color:#717cb4;font-style:italic;">      //c.Header("Access-Control-Expose-Headers", "*")  //可选<br /></span><span style="color:#717cb4;font-style:italic;"><br /></span><span style="color:#717cb4;font-style:italic;">      //放行所有OPTIONS方法<br /></span> <span style="color:#c792ea;font-style:italic;">if </span><span style="color:#808080;">method </span><span style="color:#89ddff;">== </span><span style="color:#c3e88d;">"OPTIONS" </span><span style="color:#89ddff;">{<br /></span> <span style="color:#808080;">c</span><span style="color:#89ddff;">.</span><span style="color:#808080;">AbortWithStatus</span><span style="color:#89ddff;">(</span><span style="color:#808080;">http</span><span style="color:#89ddff;">.</span><span style="color:#808080;">StatusOK</span><span style="color:#89ddff;">)<br /></span><span style="color:#89ddff;">      }<br /></span> <span style="color:#717cb4;font-style:italic;">// 处理请求<br /></span> <span style="color:#808080;">c</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Next</span><span style="color:#89ddff;">()<br /></span><span style="color:#89ddff;">   }<br /></span><span style="color:#89ddff;">}<br /></span></pre></pre><li>在router里增加cors，必须在group之前，全局设置<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><pre style="background-color:#0f111a;color:#c3cee3;font-family:'Menlo';font-size:10.5pt;"><span style="color:#808080;">r</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Use</span><span style="color:#89ddff;">(</span><span style="color:#808080;">gin</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Logger</span><span style="color:#89ddff;">(), </span><span style="color:#808080;">gin</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Recovery</span><span style="color:#89ddff;">(), </span><span style="color:#808080;">cors</span><span style="color:#89ddff;">.</span><span style="color:#808080;">Cors</span><span style="color:#89ddff;">())</span></pre></div></li><li>测试代码，header设置不能多于cors设置<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><pre style="background-color:#0f111a;color:#c3cee3;font-family:'Menlo';font-size:10.5pt;"><span style="color:#89ddff;">&lt;!DOCTYPE </span><span style="color:#ffcb6b;font-style:italic;">html</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#808080;">&lt;html </span><span style="color:#ffcb6b;font-style:italic;">lang</span><span style="color:#c3e88d;">="en"</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;</span><span style="color:#f07178;">head</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">    &lt;</span><span style="color:#f07178;">meta </span><span style="color:#ffcb6b;font-style:italic;">charset</span><span style="color:#c3e88d;">="UTF-8"</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">    &lt;</span><span style="color:#f07178;">title</span><span style="color:#89ddff;">&gt;</span>Title<span style="color:#89ddff;">&lt;/</span><span style="color:#f07178;">title</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;/</span><span style="color:#f07178;">head</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;</span><span style="color:#f07178;">link </span><span style="color:#ffcb6b;font-style:italic;">type</span><span style="color:#c3e88d;">="test/css" </span><span style="color:#ffcb6b;font-style:italic;">href</span><span style="color:#c3e88d;">="css/style.css" </span><span style="color:#ffcb6b;font-style:italic;">rel</span><span style="color:#c3e88d;">="stylesheet"</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;</span><span style="color:#f07178;">script </span><span style="color:#ffcb6b;font-style:italic;">type</span><span style="color:#c3e88d;">="text/javascript" </span><span style="color:#ffcb6b;font-style:italic;">src</span><span style="color:#c3e88d;">="https://code.jquery.com/jquery-3.2.1.min.js"</span><span style="color:#89ddff;">&gt;&lt;/</span><span style="color:#f07178;">script</span><span style="color:#89ddff;">&gt;  <br /></span><span style="color:#89ddff;">&lt;</span><span style="color:#f07178;">script </span><span style="color:#ffcb6b;font-style:italic;">type</span><span style="color:#c3e88d;">="text/javascript"</span><span style="color:#89ddff;">&gt;<br /></span> $<span style="color:#89ddff;">(</span><span style="color:#c792ea;font-style:italic;">function</span><span style="color:#89ddff;">(){<br /></span> $<span style="color:#89ddff;">(</span><span style="color:#c3e88d;">"</span><span style="color:#808080;">#cors</span><span style="color:#c3e88d;">"</span><span style="color:#89ddff;">).</span><span style="color:#82aaff;">click</span><span style="color:#89ddff;">(<br /></span> <span style="color:#c792ea;font-style:italic;">function</span><span style="color:#89ddff;">(){<br /></span> $<span style="color:#89ddff;">.</span>ajax<span style="color:#89ddff;">({<br /></span> <span style="color:#eeffff;">headers</span><span style="color:#89ddff;">:{<br /></span> <span style="color:#c3e88d;">"Content-Type"</span><span style="color:#89ddff;">:</span><span style="color:#c3e88d;">"application/json;charset=UTF-8"</span><span style="color:#89ddff;">,<br /></span> <span style="color:#c3e88d;">"Access"</span><span style="color:#89ddff;">:</span><span style="color:#c3e88d;">"adsad"</span><span style="color:#89ddff;">,<br /></span> <span style="color:#c3e88d;">"Access-Token"</span><span style="color:#89ddff;">:</span><span style="color:#c3e88d;">"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJwYXNzd29yZCI6InRlc3QxMjM0NTYiLCJleHAiOjE1NzczMzY3MTIsImlzcyI6Imdpbi1ibG9nIn0.wMlQXqZO2V0LR-FIgDh45LWI0OYMYi6an_NvRmF0Nug"<br /></span> <span style="color:#89ddff;">},<br /></span> <span style="color:#eeffff;">url</span><span style="color:#89ddff;">:</span><span style="color:#c3e88d;">"</span><span style="color:#808080;">http://127.0.0.1:8000/api/v1/articles</span><span style="color:#c3e88d;">"</span><span style="color:#89ddff;">,<br /></span> <span style="color:#82aaff;">success</span><span style="color:#89ddff;">:</span><span style="color:#c792ea;font-style:italic;">function</span><span style="color:#89ddff;">(</span><span style="color:#f78c6c;">data</span><span style="color:#89ddff;">){<br /></span> <span style="color:#ffcb6b;">console</span><span style="color:#89ddff;">.</span><span style="color:#82aaff;">log</span><span style="color:#89ddff;">(</span><span style="color:#c3e88d;">"start"</span><span style="color:#89ddff;">);<br /></span> <span style="color:#ffcb6b;">console</span><span style="color:#89ddff;">.</span><span style="color:#82aaff;">log</span><span style="color:#89ddff;">(</span><span style="color:#f78c6c;">data</span><span style="color:#89ddff;">);<br /></span><span style="color:#89ddff;">            }<br /></span><span style="color:#89ddff;">         })<br /></span><span style="color:#89ddff;">      });<br /></span><span style="color:#89ddff;">   });<br /></span><span style="color:#89ddff;">&lt;/</span><span style="color:#f07178;">script</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;</span><span style="color:#f07178;">body</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">   &lt;</span><span style="color:#f07178;">input </span><span style="color:#ffcb6b;font-style:italic;">type</span><span style="color:#c3e88d;">="button" </span><span style="color:#ffcb6b;font-style:italic;">id</span><span style="color:#c3e88d;">="cors" </span><span style="color:#ffcb6b;font-style:italic;">value</span><span style="color:#c3e88d;">="core跨域测试"</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#89ddff;">&lt;/</span><span style="color:#f07178;">body</span><span style="color:#89ddff;">&gt;<br /></span><span style="color:#808080;">&lt;/html&gt;<br /></span></pre></div></li><li><span style="color: red;"><strong>请求的headers数量、名称与cors里的设置需要严格对应，不然报错如下<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Access&nbsp;to&nbsp;XMLHttpRequest&nbsp;at&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">http://127.0.0.1:8000/api/v1/articles</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;from&nbsp;origin&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">http://localhost:9999</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;has&nbsp;been&nbsp;blocked&nbsp;by&nbsp;CORS&nbsp;policy:&nbsp;Request&nbsp;header&nbsp;field&nbsp;access&nbsp;is&nbsp;not&nbsp;allowed&nbsp;by&nbsp;Access</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Control</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Allow</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Headers&nbsp;in&nbsp;preflight&nbsp;response.</span></div></strong></span></li></ol><img src ="http://www.blogjava.net/willpower88/aggbug/434991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/willpower88/" target="_blank">一凡</a> 2019-12-26 11:17 <a href="http://www.blogjava.net/willpower88/archive/2019/12/26/434991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gin-swagger鉴权（auth）</title><link>http://www.blogjava.net/willpower88/archive/2019/12/23/434981.html</link><dc:creator>一凡</dc:creator><author>一凡</author><pubDate>Mon, 23 Dec 2019 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/willpower88/archive/2019/12/23/434981.html</guid><wfw:comment>http://www.blogjava.net/willpower88/comments/434981.html</wfw:comment><comments>http://www.blogjava.net/willpower88/archive/2019/12/23/434981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/willpower88/comments/commentRss/434981.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/willpower88/services/trackbacks/434981.html</trackback:ping><description><![CDATA[1、在main函数中增加全局配置，其中@name就是你确定的鉴权参数名，我的是token,&nbsp; &nbsp; @<span style="color: #008000; font-size: 13px; background-color: #eeeeee;">in&nbsp;header </span><span style="color: #008000; font-size: 13px; background-color: #ffffff;">说明参数放在header，你的鉴权代码需要从header中获取<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@title&nbsp;gin-blog&nbsp;API<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@version&nbsp;0.0.1<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@description&nbsp;This&nbsp;is&nbsp;a&nbsp;gin&nbsp;blog&nbsp;example<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@securityDefinitions.apikey&nbsp;ApiKeyAuth<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@in&nbsp;header<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@name&nbsp;token<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@BasePath&nbsp;/</span></div><br />2、在具体的handler里添加如下注释，此处的ApiKeyAuth和main中的apike对应，切记不要修改<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;@Security&nbsp;ApiKeyAuth</span></div><span style="color: #008000; font-size: 13px; background-color: #ffffff;"><br /></span><span style="font-size: 13px; background-color: #ffffff;">3、swagger页面如下：<br /></span><div><div><img src="http://www.blogjava.net/images/blogjava_net/willpower88/WechatIMG395.jpeg" border="0" alt="" /><br /><br />4、添加token后，后续所有有鉴权接口的header里自动携带token</div></div><img src ="http://www.blogjava.net/willpower88/aggbug/434981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/willpower88/" target="_blank">一凡</a> 2019-12-23 16:08 <a href="http://www.blogjava.net/willpower88/archive/2019/12/23/434981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>