V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
heynumber
V2EX  ›  Python

请教一个问题,关于发送请求的 headers 参数 key 大小写问题

  •  
  •   heynumber · 2017-08-24 17:27:46 +08:00 · 16391 次点击
    这是一个创建于 2634 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前在和对方对接,对方要求 headers 的某个参数,例如 "AAA" 必须大写,那么我用 python 和 php 发送过去之后会变成 "Aaa", 后来用 postman 和 fiddler 的发送也是到了对面成了 Aaa。

    请问是和 http 协议有关系吗?,试了 1.1 和 1.0 都一样。还是需要设置呢?

    15 条回复    2020-08-27 10:28:11 +08:00
    TJT
        1
    TJT  
       2017-08-24 17:51:22 +08:00
    标准是首字母大写的,X-Your-Custom-Header
    heynumber
        2
    heynumber  
    OP
       2017-08-24 17:59:05 +08:00
    @TJT 感谢回复。目前用 linux 自带的 curl 调通了,用 python 和 php 的话会强转成标准的。 但是有什么方法解决吗?
    TJT
        3
    TJT  
       2017-08-24 18:01:55 +08:00
    方法肯定有的,但我建议你让对面去改,不然就是给自己埋坑。
    heynumber
        4
    heynumber  
    OP
       2017-08-24 18:03:13 +08:00
    @TJT 公司对接的业务,也没法让他们去改,感觉这个问题很弱智,挺坑的。
    ysc3839
        5
    ysc3839  
       2017-08-24 18:03:47 +08:00
    TJT
        6
    TJT  
       2017-08-24 18:23:42 +08:00
    @ysc3839 标准是不区分大小写,但是标准规定的请求和响应的 Header 字段名是首字母大写这种格式,标准外的 Header 也基本是遵循这种命名格式的。

    因为有些实现对于标准的 Header 字段并没有兼容大小写,所以流行的实现都会把你设置的 Header 转成首字母大写的格式来保证兼容性。

    https://tools.ietf.org/html/rfc2616#page-38
    ysc3839
        7
    ysc3839  
       2017-08-24 19:23:29 +08:00
    @TJT
    > 标准是不区分大小写,但是标准规定的请求和响应的 Header 字段名是首字母大写这种格式
    这话不矛盾吗?
    just1
        8
    just1  
       2017-08-24 19:29:19 +08:00 via Android
    @ysc3839 不矛盾,一个是发送,一个是读取
    TJT
        9
    TJT  
       2017-08-24 19:51:52 +08:00
    @ysc3839 标准规定所有的 Header 名字应该是不区分大小写的,然后标准还另外规定了 Request 和 Response 的中的标准 Header 字段,其中的名字是以大写开头命名的,所以后面人们写自己的 Header 的时候的也遵循了这个格式,用的人多了,自然就变成了 “标准”。

    这样应该好理解点
    ysc3839
        10
    ysc3839  
       2017-08-24 20:53:10 +08:00
    @TJT 我觉得这只是个习惯吧,现在 Chrome Dev Tools 里面的 Response Headers 也显示小写了。
    wwqgtxx
        11
    wwqgtxx  
       2017-08-25 00:56:42 +08:00
    @ysc3839 貌似只是在使用 HTTP/2 协议的时候才会显示小写的 Response Headers
    ysc3839
        12
    ysc3839  
       2017-08-25 01:30:52 +08:00 via Android
    @wwqgtxx 刚才又看了,有的时候只是 Requests,有的时候只是 Response,有的时候两个都是
    usedname
        13
    usedname  
       2017-08-25 02:23:02 +08:00 via Android
    这是在给自己挖坑,我建议楼主不要改
    heynumber
        14
    heynumber  
    OP
       2017-08-25 14:08:49 +08:00
    @usedname 挺坑的,我最后用 curl 才弄通,后续在想办法,这样下去肯定不行
    fffgrdcc
        15
    fffgrdcc  
       2020-08-27 10:28:11 +08:00
    @TJT 我们在后端代码里面,key 应该首字母大写还全小写?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2201 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:19 · PVG 08:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.