dongqing6755 2018-03-11 03:11
浏览 371
已采纳

请求方法无效时,http.NewRequest()不会引发错误

package main

import (
    "log"
    "net/http"
)

func main() {
    // invalid method called "bad"
    req, err := http.NewRequest("bad", "https://www.google.com", nil)
    if err != nil {
        log.Printf("E! got err: %v", err)
    } else {
        log.Printf("I! request method: %s", req.Method)
    }
}

https://play.golang.org/p/NM8_4pkN5uM

err is nil here, can someone explain?

Thanks!

  • 写回答

1条回答 默认 最新

  • duanjizhan9353 2018-03-11 07:02
    关注

    bad is not considered as a bad http method.

    Any string of non zero length having characters from !#$%&*+-.0123456789ABCDEFGHIJKLMNOPQRSTUWVXYZ^_`abcdefghijklmnopqrstuvwxyz|~ is considered valid

    Following is the function used to validate a method

    func validMethod(method string) bool {
    
        /*
    
             Method         = "OPTIONS"                ; Section 9.2
    
                            | "GET"                    ; Section 9.3
    
                            | "HEAD"                   ; Section 9.4
    
                            | "POST"                   ; Section 9.5
    
                            | "PUT"                    ; Section 9.6
    
                            | "DELETE"                 ; Section 9.7
    
                            | "TRACE"                  ; Section 9.8
    
                            | "CONNECT"                ; Section 9.9
    
                            | extension-method
    
           extension-method = token
    
             token          = 1*<any CHAR except CTLs or separators>
    
        */
    
        return len(method) > 0 && strings.IndexFunc(method, isNotToken) == -1
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式