“too many parameters“我是如何解决这个Gin报错的。

首先,上截图;报错如下,有用的信息一共三行。
在这里插入图片描述
我首先,肯定是找到我自己代码文件,查看是不是代码写的有误;IDE会不会有错误提示。
于是,定位到security.go第152行;代码如图
在这里插入图片描述
IDE没有任何报错提示,并且,错误处理中的err没有触发;如果触发那报错输出中应该有“Error running gin”字眼,没看到。

于是,忽略它;将目标转移到报错的第一个代码文件utils.go第151行,如图

很显然,这个地方就是报错的具体位置;一个函数判断了输入的字符串切片的长度,如果为1则正常;如果大于1则抛出上文中的错误。

(这个时候已经猜到了,还是上文中r.Run(":", strconv.Itoa(config.Port))的问题;而且这里没有return;直接panic了;所以err没有触发。不过,我们接着往下看。)
在这里插入图片描述
看报错中第二个代码文件gin.go第354行,如图

很显然,这是Run那个函数;它把输入的字符串参数交给上文中resolveAddress(addr)函数做处理。这样子问题就明了了。

说明Run只能接收0或一个参数
在这里插入图片描述
随后,修改代码;问题解决。
在这里插入图片描述
其实,这个报错是属于疏忽大意导致的;我也是排除了很多才发现是代码的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误通常发生在Go语言中使用Gin框架访问HTTPS服务器时,因为Gin默认不包含根证书来验证SSL/TLS连接。当你遇到 "SSL certificate problem: unable to get local issuer certificate" 错误,这表明程序无法识别或信任服务器提供的SSL证书。 要解决这个问题,你可以按照以下步骤操作: 1. **添加根证书**: - 如果证书是从可信来源获取的,可以在项目中手动添加。下载并复制证书到 `~/.ssl/certs` 目录下(Linux/Mac)或 `%USERPROFILE%\AppData\Roaming\SystemCertStore\Certificates` (Windows),然后重启你的服务。 - 使用第三方库如 `golang.org/x/crypto/ocsp` 和 `golang.org/x/net/cafile` 来处理自签发证书的信任。 2. **配置Gin**: 在Gin的配置里设置 `WithTLSConfig` 或者 `UseTLS` 函数时,提供一个包含了可信根证书的 `tls.Config` 对象: ```go import ( "github.com/gin-gonic/gin" "golang.org/x/crypto/tls" ) // 创建TLS配置 tlsConfig := &tls.Config{ RootCAs: pem.ParseCertificateFiles([]string{"path/to/certificate.pem", "path/to/chain.pem"}), // 根据实际情况替换文件路径 InsecureSkipVerify: true, // 开始时先忽略证书校验 } // 启动服务器 router := gin.Default() router.Use(gin.TLS(tlsConfig)) ``` 请记得替换路径,并最终在生产环境中移除 `InsecureSkipVerify`,以免安全风险。 3. **环境变量**: 如果证书在运行时动态变化,可以使用环境变量传递证书路径。 4. **检查网络代理**: 确认你的机器没有代理设置或者代理配置不支持SSL证书验证。 如果你还是遇到了问题,可以尝试更新你的系统证书存储,或者联系服务器管理员确认证书的有效性和颁发机构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deng_Xian_Shemg

捐助1元钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值