我最近使用自定义标头来覆盖我们的Web应用程序的行为(我们的a-b测试分配),以便通过浏览器进行测试。它的工作原理是,如果应用程序代码检测到具有某些命名约定的标题名称,它将对其进行处理,并采取相应的行动。
功能适用于localhost 以及qa等其他内部环境。但是当它上线时它失败了(我们的应用程序是在tomcat上运行的公共网站,语言是Java 7; qa环境使用相同的技术)。
根本原因是标题“命名”约定中包含特殊字符,如点(。)和感叹号(!)。我很困惑它完全适用于内部环境但不适用于生产。任何想法是怎么回事?
如果标题名称中没有特殊字符,我确认生产代码有效。
答案 0 :(得分:1)
有效字符在http://greenbytes.de/tech/webdav/rfc7230.html#header.fields中定义;两个"!"和"。"是有效的。