You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Yaws的Nitrogen设置Cookie抛出异常求助

问题排查:Nitrogen+Yaws环境内部服务器错误(SameSite Cookie参数兼容问题)

环境信息

  • Nitrogen 2.4.0
  • Yaws 2.0.8
  • ERTS 13.2 - R25

问题现象

访问http://0.0.0.0:8000/时返回「Internal server error」,控制台输出以下错误栈:

{error,first_request,
    {url,"b_server/"},
    {throw,
        {badarg,same_site},
        [{yaws_api,cookie_option,2,[{file,"src/yaws_api.erl"},{line,725}]},
         {yaws_api,'-set_cookie/3-fun-0-',2,
             [{file,"src/yaws_api.erl"},{line,734}]},
         {lists,foldl,3,[{file,"lists.erl"},{line,1350}]},
         {yaws_api,set_cookie,3,[{file,"src/yaws_api.erl"},{line,733}]},
         {yaws_simple_bridge,'-assemble_headers/1-lc$^0/1-1-',1,
             [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
              {line,215}]},
         {yaws_simple_bridge,assemble_headers,1,
             [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
              {line,215}]},
         {yaws_simple_bridge,build_response,2,
             [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
              {line,161}]},
         {wf_core,run,0,[{file,"src/wf_core.erl"},{line,23}]}]}}
Crash Handler Crashed:
{throw,{badarg,same_site},
       [{yaws_api,cookie_option,2,[{file,"src/yaws_api.erl"},{line,725}]},
        {yaws_api,'-set_cookie/3-fun-0-',2,
                  [{file,"src/yaws_api.erl"},{line,734}]},
        {lists,foldl,3,[{file,"lists.erl"},{line,1350}]},
        {yaws_api,set_cookie,3,[{file,"src/yaws_api.erl"},{line,733}]},
        {yaws_simple_bridge,'-assemble_headers/1-lc$^0/1-1-',1,
                            [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
                             {line,215}]},
        {yaws_simple_bridge,assemble_headers,1,
                            [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
                             {line,215}]},
        {yaws_simple_bridge,build_response,2,
                            [{file,"src/yaws_bridge_modules/yaws_simple_bridge.erl"},
                             {line,161}]},
        {wf_core,run_crash,4,[{file,"src/wf_core.erl"},{line,46}]}]} 

问题成因

核心错误为{badarg,same_site},根源是Yaws 2.0.8不支持SameSite Cookie属性,而Nitrogen 2.4.0在生成响应Cookie时会自动添加SameSite参数,导致Yaws的yaws_api:cookie_option/2函数无法识别该参数,抛出参数错误。

解决方案

方案1:升级Yaws版本

Yaws从2.1.0版本开始正式支持SameSite Cookie属性,直接升级到2.1.0及以上版本即可解决该兼容问题。

方案2:修改SimpleBridge代码(不升级Yaws时)

找到Nitrogen依赖的yaws_simple_bridge.erl文件,定位到assemble_headers/1函数(第215行附近),在调用yaws_api:set_cookie/3前过滤掉Cookie选项中的same_site参数:

% 修改后代码示例
FilteredOptions = proplists:delete(same_site, Options),
yaws_api:set_cookie(Name, Value, FilteredOptions),

方案3:禁用Nitrogen的SameSite Cookie设置

在Nitrogen的配置文件(如site.config)中,修改Cookie配置,关闭SameSite参数的自动生成:

{nitrogen, [
    {cookie_options, [
        % 移除或注释掉same_site相关配置项
        % {same_site, lax}
    ]}
]}

内容的提问来源于stack exchange,提问作者Vianney Sserwanga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:15:06