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

Firefox中无法创建自定义Cookie - 出现NS_BINDING_ABORTED错误

ASP.NET MVC Firefox无法设置Cookie的解决方法

问题背景

ASP.NET MVC应用在Firefox中无法创建Cookie,但Chrome和Edge可正常工作。相关C#代码如下:

HttpCookie myCookie = new HttpCookie("myCookie")
{
   Value = "some_value",
   Expires = DateTime.Now.AddYears(1)
};

HttpContext.Current?.Response.Cookies.Add(myCookie);

已完成排查:

  • 全新Firefox 123.0 64位版本测试,问题复现;
  • 站点为HTTPS非本地站点;
  • 已关闭增强型跟踪保护,域名加入Cookie例外列表。

更新发现:Ajax POST请求触发NS_BINDING_ABORTED错误,对应JS代码:

function redirectTo(obj, url) {
   xhr('/api/MyController/SetCookie', JSON.stringify(obj), () => {
 });
 window.location.href = url;
}

问题根源

核心原因是Ajax请求未完成就执行了页面跳转:Firefox会直接终止未完成的请求(表现为NS_BINDING_ABORTED),导致服务器返回的Cookie响应头无法被浏览器解析;而Chrome/Edge在跳转前仍会处理已返回的响应头,因此能正常设置Cookie。

解决方案

修改JS代码,将页面跳转逻辑放在Ajax请求的回调函数内部,确保请求完成后再执行跳转:

function redirectTo(obj, url) {
   xhr('/api/MyController/SetCookie', JSON.stringify(obj), () => {
       // 等待请求完成后再跳转
       window.location.href = url;
   });
}

额外优化建议

  1. 给Cookie添加SameSite和Secure属性,适配现代浏览器的安全策略:
HttpCookie myCookie = new HttpCookie("myCookie")
{
   Value = "some_value",
   Expires = DateTime.Now.AddYears(1),
   SameSite = SameSiteMode.None, // 跨站场景用None,同站可设为Lax/Strict
   Secure = true // HTTPS站点必须开启,否则Firefox可能拒绝Cookie
};
  1. 确保xhr函数正确处理请求状态(比如监听onload事件),避免请求失败时出现异常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:12:33