Looking at the raw bytes is the step that is easy to skip, and the post makes a clear case for why the header object in a framework is not enough. A value can look fine in your code while the client is already emitting two lines with the same name. I also appreciated the reminder that a global interceptor and a call site can each add the same field. A small checklist I would keep: inspect the wire, search every place the header is set, and write down one rule for array versus comma-joined values before guessing at the server.