如何阻止我的应用程序在Safari中记录人们的会话?

时间:2012-02-29 18:16:41

标签: macos cookies nsurlconnection

我的命令行测试工具使用NSURLConnection,干扰了Safari的Cookie。我该如何阻止这种情况发生?

这就是我所看到的:

  1. 我登录Safari的网站。
  2. 我运行基于命令行的同步工具。
  3. 同步工具登录,并获取多页数据。对于每个请求,cookie都会滚动。 (同步工具不会注销。)
  4. 我返回Safari并点击链接。该链接将我返回登录屏幕。
  5. 如果我跳过步骤2-3,Safari中的链接可以正常工作。我的工具显然是其原因。

    我正在创建这样的连接:

    _connection = [[NSURLConnection alloc] initWithRequest: request
                                                  delegate: self
                                          startImmediately: NO];
    

    我没有明确地对cookie做任何事情,只是让默认代码处理它们。

    我不确定这里到底发生了什么。如果Safari和我的应用程序真的共享 Cookie,那么Safari的cookie副本是否也会被覆盖?虽然奇怪的行为,一切都会工作,我甚至不知道发生了什么。这是别的。

    无论如何,我怎样才能阻止我的命令行工具在Safari中记录人们的会话?

1 个答案:

答案 0 :(得分:1)

似乎正确的方法是完全关闭默认的cookie处理,因此它不会触及共享存储。您可以使用-[NSMutableURLRequest setHTTPShouldHandleCookies:NO]来禁用默认行为,然后从响应中读取Cookie标头,自行存储它们,并根据需要将它们插回到后续的URL请求中。