0

我正在做一个项目,我正在做 html 和 jquery 工作,并且在服务器端有 cgi。现在我们想在其中实现登录/注销功能,但问题是我们没有使用像 php 这样的脚本语言。我想使用 jquery.cookie.js 生成 cookie 并将其与每个请求一起发送到服务器。我的问题是如何为特定浏览器的所有页面只生成一个 cookie,以便相同的 cookie 可以发送到服务器。如果用户知道页面名称,那么他可以直接访问它(http://www.mydomain.com/page .html)。我只使用 html,所以我必须在每个页面上包含所有 js 和 css。

如果出于相同目的有任何其他替代方案,则可以接受。

4

1 回答 1

2

jquery.cookies.js 只是帮助您在浏览器中设置/修改/删除/获取 cookie(默认内置界面对此不是很方便)

一旦你设置它 - 每个下一个请求将自动包含该 cookie。Cookie 有多种设置,例如仅适用于某些路径(例如,您可以告诉浏览器仅在页面具有 www.example.com/path_with_cookie/* 之类的路径时才发送 cookie)或何时到期。只需打开插件的文档并阅读如何使用脚本设置不同的选项。一旦设置了 cookie - 它将与任何满足域和路径等要求的请求一起发送,直到它没有被删除或过期。

但是我看不到如何在没有任何服务器端编码的情况下创建登录/注销。好吧,您可以使用 js/css 在浏览器中隐藏/显示一些元素,但不涉及服务器(通常服务器将检查用户是否使用 cookie 登录并根据该内容做出决定是否应向用户显示某些内容) 这将是无用的。一旦将某些内容传递到浏览器,任何知道 JS/HTML 工作原理的人都可以看到隐藏的内容。另外-您需要以某种方式检查登录名/密码是否正确-不知道如何在没有服务器端编码并且仍然安全的情况下做到这一点。

升级版:

如果您仍然需要将 cookie 放入表单中,您可以添加如下代码:

$(document).ready(function() {
    $('form').live("submit", function(){
       $(this).append($("<input type=\"hidden\" name=\"auth_cookie\">").val($.cookie('auth_cookie')));
    });
});

另一种方式(对于较新版本的 jquery,live现在已弃用):

$(document).on("submit", 'form', function(){...});

此代码将捕获提交事件并将隐藏字段添加到任何提交的表单。当然,它应该添加到任何可用表单的页面上。

于 2012-12-27T12:45:47.180 回答