首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何复制HTTP报头?

如何复制HTTP报头?
EN

Stack Overflow用户
提问于 2020-02-04 10:20:46
回答 1查看 1.4K关注 0票数 1

我是在Nginx后面的Gunicorn的帮助下运行Django的。我使用Nginx在响应中添加了一些头,但随后我决定用Django编写中间件,这也是这样做的。

我在头Access-Control-Allow-Headers中添加了一些值。我添加了中间件,但忘了删除Nginx,它正在添加标头。因此,这两个层最后都添加了标题。后来,我在浏览器中查看了响应,这让我大吃一惊。

这是反应的截图,

这就引出了一个问题,这是怎么可能的?

Django的反应是不同的对象,Nginx的反应不同吗?响应对象的结构究竟是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-05 08:51:07

真的,HTTP头不是对象。最好把它们看作是键值对,而不是别的。很有可能有重复的头和头值。

发生这种情况的原因只是基于特定的指令(服务器)或用于设置标头的代码,以及在请求处理中这些头添加的位置。

如果您在后端应用程序(Django,但实际上可以是任何东西,如PHP)中添加了一个标头,那么在NGINX中使用add_header处理相同的标题,您将有重复的标题。

仅仅因为add_header没有查看从上游接收到的标头(您的应用程序),然后盲目地添加您在其配置中指定的标头。

如果您希望具有"set“行为,则完全避免重复标题,然后使用第三方模块标题更多

这将为您提供一些额外的指令,以确保您期望的行为,例如more_set_headers。但是,性能影响很小,因为set意味着必须先从后端搜索现有的标头,然后再对其进行溢出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60063401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档