gpt4 book ai didi

c# - 在 Chrome 中更新谷歌翻译 cookie 时出现问题

转载 作者:可可西里 更新时间:2023-11-01 03:02:28 25 4
gpt4 key购买 nike

我试图让用户设置他们的默认语言。当用户从下拉列表中选择一种语言并点击“保存”时,页面会重新加载,谷歌翻译 cookie 也会更新——因此网站会被翻译成用户选择的语言。在 FF 和 IE 上,用户可以使用下拉菜单设置语言,然后将其更改为另一种语言。然而,在 Chrome 上,用户可以在第一次设置语言,但之后他们不能将其更改为其他语言。

此问题仅出现在测试和测试版网站上 - 我可以在我的本地主机上更新语言。

我正在使用 Chrome 版本 38 进行测试。

这是第一次设置 Cookie 的代码,也是在用户单击“保存”时更新它的代码。

public void ImplementUserPreferences(UserPreferences prefs)
{
//examples of prefs.GoogleTranslateDefaultLanguage:
// af, sq, ar, sp, is....
HttpCookie languageCookie = new HttpCookie("googtrans", "/en/" + prefs.GoogleTranslateDefaultLanguage);
AddOrSetCookie(languageCookie, "googtrans");
}

private void AddOrSetCookie(HttpCookie cookie, String cookieName)
{
if (System.Web.HttpContext.Current.Request.Cookies[cookieName] == null)
{
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
else
{
System.Web.HttpContext.Current.Response.Cookies.Set(cookie);
}
}

最佳答案

检查响应 header ,但我不相信当您的地址是本地主机时,cookie 不会在请求中发送。因此,根据您的逻辑,首选项将每次更新,因为请求不存在 cookie。

HttpResponse 不会发回请求中的 cookie,它只会添加您要在响应中设置的 cookie。因此,当您在 beta 站点中进行测试时,请求会在设置 cookie 后传入,并将在 else 条件下调用代码。 HttpCookieCollection.Set(...) 方法不添加 cookie,仅更新集合中已经存在的 cookie。我会将代码更改为如下所示:

private void AddOrSetCookie(HttpCookie cookie, String cookieName)
{
if (System.Web.HttpContext.Current.Request.Cookies[cookieName] == null
|| System.Web.HttpContext.Current.Request.Cookies[cookieName].Value != cookie.Value )
{
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}

}

关于c# - 在 Chrome 中更新谷歌翻译 cookie 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com