IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Valid HTTP verbs

    est发表于 2024-07-17 09:47:00
    love 0

    从这里 想到,fetch/xhr 可以发起哪些 http verb 呢?

    python -m http.server 随手测试了下,发现连 !,$ 这种符号都可以作为 http verb,比如 fetch('/asdf', {method:"$"}) 这样的请求是能发起的。于是去 chromium 搜了下 "is not a valid HTTP method" 相关的解析放在 blink/renderer/platform/network/http_parsers.cc

    // See RFC 7230, Section 3.2.6.
    bool IsValidHTTPToken(const String& characters) {
      if (characters.empty())
        return false;
      for (unsigned i = 0; i < characters.length(); ++i) {
        UChar c = characters[i];
        if (c > 0x7F || !net::HttpUtil::IsTokenChar(c))
          return false;
      }
      return true;
    }
    
    bool HttpUtil::IsTokenChar(char c) {
      return !(c >= 0x7F || c <= 0x20 || c == '(' || c == ')' || c == '<' ||
               c == '>' || c == '@' || c == ',' || c == ';' || c == ':' ||
               c == '\\' || c == '"' || c == '/' || c == '[' || c == ']' ||
               c == '?' || c == '=' || c == '{' || c == '}');
    }
    

    原来如此,RFC 7230呀。于是把这些字符打出来:' '.join(chr(x) for x in range(0x20, 0x7f))

    ! # $ % & ' * + - . 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z | ~
    

    那还搞个屁的 RESTful 啊。直接用特殊符号一把梭。不过各种服务端框架可能不是很容易做兼容。哈哈。



沪ICP备19023445号-2号
友情链接