自定义 HTTP 标头值 - 尝试传递变音字符

sam*_*amz 2 diacritics character-encoding node.js express

我正在使用 Node.js 和 Express.js 3.x。

作为我们的授权标头之一,我们传入用户名。我们的一些用户名包含变音字符:ü ö ä 等。对于只有“普通”字符的用户名,一切正常。但是当 jörg 尝试发出请求时,服务器无法识别标头中的变音字符。

试图模拟我的问题:

  • 创建了一些使用变音字符设置用户名标题的测试。这些测试通过,他们能够正确地通过变音。
  • 使用“邮递员”和“高级休息客户端”Chrome 扩展程序并手动向服务器发出请求 - 在这种情况下它失败了。我看到服务器无法识别变音字符,它突然将其解释为某种?.

对禁止使用此类字符的自定义 HTTP 标头值字符是否有任何限制?知道为什么它可以在测试中工作但不能在我的浏览器扩展中工作吗?我是否忘记在某处设置一些字符集?

sam*_*amz 5

其他相关问题和评论中所写内容的摘要:

  • 您可以在自定义标题值字段中放置任何 “可打印”ASCII 字符
  • 如果您想使用特殊字符,请按照您选择的任何规则/字符集/编码对这些字符进行编码。只要这种编码使用简单的 ASCII 字符,就可以了。一个例子是使用 UTF-8 并将字符串字符编码为 \u%%。
  • 在服务器端 - 您必须手动理解编码的字符串,可能通过使用您之前选择的字符集/编码范例的规则对其进行解码。