【问题标题】:How do you use an Ampersand in an HTTPCookie in VB.NET?如何在 VB.NET 的 HTTPCookie 中使用与号?
【发布时间】:2011-08-01 21:43:05
【问题描述】:

我有一个cookie保存给用户,如下...

Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
searchCookie.Item("SearchText") = FullSearchCriteria.SearchText
searchCookie.Item("SearchType") = FullSearchCriteria.SearchType

SearchText 存储他们在前一页中输入的值。我们观察到如果 cookie 中有一个 & 符号(例如 Tyne & Wear),那么 cookie 不会保存后续值(SearchType)。

cookie 是这样输出的:

SearchText=Tyne &

显然 & 符号混淆了 cookie。有没有办法防止这种情况发生?

【问题讨论】:

    标签: vb.net cookies ampersand


    【解决方案1】:

    您可以使用URLEncode 方法。

    类似:

    imports HttpContext.Current
    ...
    Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
    searchCookie.Item("SearchText") = Server.UrlEncode(FullSearchCriteria.SearchText)
    searchCookie.Item("SearchType") = Server.UrlEncode(FullSearchCriteria.SearchType)
    

    这是必不可少的,因为 only certain characters are allowed in cookies 带有 ampersands breaking them 等字符。

    【讨论】:

      【解决方案2】:

      天啊!我真是个笨蛋……

      Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
      searchCookie.Item("SearchText") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchText)
      searchCookie.Item("SearchType") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchType)
      

      【讨论】:

        【解决方案3】:

        cookie 值需要编码。我不是VB专家,但看起来这是用方法完成的

        System.Web.HttpUtility.UrlEncode
        

        【讨论】:

          猜你喜欢
          • 2016-01-03
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 2012-11-07
          • 2015-05-06
          • 2013-03-10
          • 2017-10-19
          • 2014-01-31
          相关资源
          最近更新 更多