2

我真的需要这方面的帮助。我正在开发一个 TiddlyWiki 作为我组织的导航工具,用于在我们极其缓慢和繁琐的内​​部网站/服务器上查找文件。

问题:TiddlyWiki 保存到 cookie 的某些选项显然与内部网站自己的 cookie 选项冲突。TiddlyWiki 必须托管在内部网站上/从内部网站加载,因此其 cookie 具有与内部网站相同的 url/名称。各种有用的 TiddlyWiki 插件会留下 cookie,这些 cookie 要么阻止一个人将任何内容上传到内部网站,甚至完全阻止它打开。

告诉本网站的每个用户在查看网站后删除他们的 cookie 不是一种选择。

我无法访问 cookie 的内容,因为我们的信息管理权限过程缓慢、复杂,甚至不了解我的问题。

我做了很多事情来尝试解决这个问题:

我使用了 CookieManager 插件并将其设置为禁止任何 cookie,但 cookie 仍然被丢弃。

我尝试禁用插件、重新上传和测试。在摆脱了几个有用的插件之后,我至少仍然能够访问内部网站。但是,我必须禁用高级搜索插件才能解决无法上传到内部站点的问题。我真的需要高级搜索,因为它既提供了一些访问者/编辑者的隔离,也是为我的组织使用 TiddlyWiki 的主要销售功能之一。

我尝试将高级搜索插件中的选项(特别是)重命名为我们内部站点可能不会用作 cookie 选项的名称。这似乎不起作用。

起作用的是它手动编辑 TiddlyWiki 源代码以注释掉 saveCookie 函数的内部代码:

function saveCookie(name)
{
//  var cookies = {};
//  for(var key in config.options) {
//      var value = getOption(key);
//      value = value == null ? 'false' : value;
//      cookies[key] = value;
//  }
//  document.cookie = 'TiddlyWiki=' + String.encodeHashMap(cookies) + '; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/';
//  cookies = getCookies();
//  for(var c in cookies) {
//      var optType = c.substr(0,3);
//      if(config.optionHandlers[optType])
//          removeCookie(c);
//  }
}

不过,我的问题是,这必须在每次升级 TiddlyWiki 模板后完成,有时我需要在完成 Windows 允许 TiddlyWiki 保存所需的复制/粘贴/文件重命名步骤之后执行此操作。(这些步骤通常会搞砸 TiddlyWiki 模板,因此它认为 TiddlyWiki 文件无效。然后它会拒绝保存更改,直到我升级为止。)

我不介意手动执行此操作。这很麻烦,但不会花很长时间。不过,我不能指望我们网站团队的任何其他成员这样做,我需要让我们的 TiddlyWiki 处于可以在没有我的情况下维护/更新的状态。

我尝试像这样制作 systemConfig 文件:

//{{{
function saveCookie(name) { }
//}}}

我认为/希望它会覆盖该函数,即使它在原始源代码中完好无损。如果是这样,它不会在 TiddlyWiki 丢弃一个破坏 [访问] 我们内部网站的能力的 cookie 之前这样做。我进一步尝试从https://stackoverflow.com/questions/595228/how-can-i-delete-all-cookies-with-javascript插入第一个答案的 TiddlyWiki 版本。这会导致 TiddlyWiki 冻结。它会引发堆栈溢出警报。

我真的需要帮助,因为我不知道还能做什么,这是一个可能会危及我的组织使用 TiddlyWiki 的问题。

谢谢,

荷兰语

4

1 回答 1

3

我还在 TiddlyWiki 谷歌群组(http://groups.google.com/group/tiddlywiki/browse_thread/thread/b33c696a628e4606)上问了这个问题并得到了几个答案。

我被指向http://mptw2.tiddlyspot.com/#HijackingHowto,它展示了如何重新定义核心 TiddlyWiki 功能,例如,在某些条件下改变它们的行为。

其中大部分远远超出了我解决这个问题的需要,但仅仅看看他们如何重新定义他们的核心功能就给了我一个解决方案。

我知道我在修补 TiddlyWiki 时使用的唯一 JavaScript,所以我不完全理解为什么我现在拥有的东西可以工作,而我以前没有的东西,但这里的代码将完全杀死 cookie(再一次,它应该在一个标记为 systemConfig 的插件中):

 //{{{ 
 window.saveCookie = function(name) { } 
 //}}}

我在想这可能与核心 TiddlyWiki 代码运行在所有声明的函数都被分配到的级别上有关window

于 2011-07-14T13:41:50.980 回答