使用c#编写cookie并使用javascript读取

时间:2015-03-16 07:08:19

标签: javascript c# cookies

通常情况下,Cookie会存储在以下位置:

  
    

C:\ Users \用户SomeUser是否\应用程序数据\漫游\微软\的Windows \饼干

  

我想要做的是使用c#在这个位置的文本文件中写入cookie,这很简单没问题,这没关系。

但是我无法在我的网络应用程序中使用java-script找到从该文件读取cookie的方法。

甚至可能吗?

4 个答案:

答案 0 :(得分:1)

JavaScript没有权限从光盘读取文件。您无法从本地文件发出跨域请求,因为它不在域中。您需要在本地Web服务器实例上托管C:\ index.html才能使其正常工作。或者使用以下参数启动Chrome。

--disable-web-security -–allow-file-access-from-files

您还应该将以下内容添加到服务响应中:

response.setHeader("Access-Control-Allow-Origin", "*");

答案 1 :(得分:0)

我认为这是有可能的,但由于安全问题,它不会直截了当。

检查这个jQuery lib:https://github.com/carhartl/jquery-cookie


注意:某些浏览器例如。 Chrome,限制使用文件中的coockies:Why does Chrome ignore local jQuery cookies?

答案 2 :(得分:0)

我想你在评论中提到这个答案..

如果用户已登录桌面应用程序,我希望用户自动登录,使用Cookie我想将登录用户的一些信息传递给浏览器

。为此,您需要生成一个令牌,该令牌可用于存储在数据库中的一次性登录,并确保如果未在例如数据库中使用过令牌,则令牌过期。 8小时。启动网站时,将查询字符串上的标记传递给网站。然后,网站使用令牌将用户的会话连接到他们的帐户,并删除令牌。

您也可以使用Single sign on WIKI

答案 3 :(得分:0)

经过艰苦的努力和搜索后,我找到了一种方法。我们可以使用 wininet.dll 中的InternetSetCookie方法为特定网址或网络应用程序设置Cookie。

在您的课程中添加此代码:

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool InternetSetCookie(string url, string name, string data);



public static bool SetWinINETCookieString(string url, string name, string data)
{
   return Form1.InternetSetCookie(url, name, data);
}

用法:

var cookieOutput = SetWinINETCookieString("http://localhost:49549/Home/Index", "dataToTest", "thisIsTheData;Expires = " + DateTime.Now.AddDays(10).ToString("R"));

出于测试目的,我硬编码了我的应用程序特定网址。

然后在Web应用程序中我写了这个javascript来获取cookie值:

$(document).ready(function () {

            alert(getCookie("dataToTest"));

});

这里是getCookie函数:

function getCookie(name) {
            var value = "; " + document.cookie;
            var parts = value.split("; " + name + "=");
            if (parts.length == 2) return parts.pop().split(";").shift();
        }

This SO post真的帮助了我。