x509: certificate signed by unknow n authority

最近的go项目遇见这个问题,记录一下,问题起因是调用别的项目组接口时,接口由http更改为https,之前调试通过的调用接口推送信息方式返回的request请求报错如下:x509: certificate signed by unknow n authority

几番查找之后修改完毕,更改如下

1.引入 "crypto/tls" 包

2.定义TLSClientConfig,忽略证书校验

原写法

//发起请求
func Request(url string, header http.Header, method string, params io.Reader) (status string, resHead http.Header, body []byte, res *http.Response, err error) {

	defer func() { //必须要先声明defer,否则不能捕获到panic异常
		if err := recover(); err != nil {
			fmt.Println("request中panic了,消息:", err) //这里的err其实就是panic传入的内容
			return
		}
	}()

	tr := &http.Transport{
		DisableKeepAlives: true,
	}
	client := &http.Client{}
	req, err := http.NewRequest(method, url, params)

	if err != nil {
		//fmt.Println(err)
		return
	}
	req.Header = header
	res, err = client.Do(req)
	if err != nil {
		return
	}
	defer func() {
		if err = res.Body.Close(); err != nil {
			logger.Error("request 请求中返回的body关闭失败:" + err.Error())
		}
	}()
	bodyByte, err := ioutil.ReadAll(res.Body)
	return res.Status, res.Header, bodyByte, res, nil
}

更改代码段即可

tr := &http.Transport{
		DisableKeepAlives: true,
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}

client := &http.Client{Transport: tr}

 

你可能感兴趣的:(错误集锦,go,go)