Lucee是否会移除请求头中的Cookie?部署场景问题咨询
Lucee本身不会主动移除业务相关的特定Cookie,你遇到的问题是Cookie命名不规范和中间件过滤逻辑共同导致的,具体原因和解决方法如下:
核心原因
- Cookie名称包含非法字符,触发解析过滤
你提到的目标Cookie名称为OAMAuthNCookie_mysite.com:443,其中包含的冒号:不符合RFC 6265 Cookie命名规范,该规范明确要求Cookie名称仅可包含字母、数字、以及!#$%&'*+-.^_|~`这部分特殊符号,冒号属于被禁止的字符。无论是IIS的请求过滤模块,还是Lucee 5.2.x版本的原生Cookie解析逻辑,遇到不符合命名规范的Cookie都会直接跳过解析,不会将其归入Cookie作用域供上层调用。 - IIS提前剥离了异常Cookie
IIS和Lucee之间的转发依赖BonCode连接器,IIS默认的安全校验规则会主动清理请求头中包含特殊字符的异常内容,多数情况下该Cookie在IIS转发请求到Lucee进程之前就已经被移除,因此Lucee侧根本接收不到该Cookie。
解决方法
- 优先调整Cookie命名规则
修改Oracle Webgate的配置,将Cookie名称中的端口冒号后缀替换为合法字符,例如将:443调整为_443,生成符合RFC规范的Cookie名,即可被IIS和Lucee正常解析。 - 手动提取原始Cookie头
如果无法修改Webgate配置,可以在Lucee代码中直接获取原始未解析的Cookie请求头,手动拆分提取目标值,示例代码如下:
<cfset rawCookieHeader = GetPageContext().getRequest().getHeader("Cookie")> <!--- 自行编写逻辑从rawCookieHeader字符串中匹配OAMAuthNCookie_mysite.com:443的取值 --->
- 调整IIS请求过滤规则
如果确认Cookie在IIS层面被剥离,可以在IIS的请求过滤配置中放宽Cookie头的字符校验规则,允许冒号出现在Cookie值/名称中,确保请求转发时不会剥离该Cookie。
内容的提问来源于stack exchange,提问作者js1983
相关产品推荐
相关产品推荐

