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

Write cookie using c# and read using javascript

本文关键字:使用 javascript 读取 cookie 编写      更新时间:2023-09-26

通常 Cookie 存储在以下位置:

C:''Users''SomeUser''AppData''Roaming''Microsoft''Windows''Cookies

我想做的是使用 c# 在此位置的文本文件中编写 cookie,这很简单,完全没有问题,这没关系。

但是我无法找到在我的 Web 应用程序中使用 java 脚本从该文件读取 cookie 的方法。

甚至可能吗?

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

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

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

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

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

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


注意:某些浏览器例如。Chrome,限制使用文件中的coockies:为什么Chrome忽略本地jQuery cookie?

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

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

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

您也可以在 WIKI 上使用单点登录

经过多次挣扎和寻找,我找到了一种方法。我们可以使用wininet中的InternetSetCookie方法来.dll为特定的URL或Web应用程序设置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"));

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

然后在 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();
        }

这个SO帖子真的帮助了我。