如何从Safari浏览器完全刷新缓存的重定向?


27

我有一台带有基于Web的控制面板的设备,并且不小心将其设置为将所有http页面重定向到https,即使有些页面无法正常工作https。尽管我已经纠正了这个问题,但Safari似乎已经记住了重定向并且拒绝忘记它,而是不断尝试将我重定向到无效https地址。

我已经关闭了Safari,已将其清除~/Library/Caches/com.apple.Safari/~/Library/Cookies/HSTS.plist但是当我重新打开它时,它似乎仍然记得该重定向。

Safari还能在哪里存储此信息?我可以通过Firefox或Chrome浏览器访问正确的页面,因此它可能不是系统范围的服务,或者不是其他浏览器使用的服务。

不幸的是,因为Web面板是由设备提供的,所以我不相信我可以调整标题或将重定向设置回正确的URL,这似乎是其他类似问题中提供的选项,因此我确实需要找出该位置。数据正在存储中,所以我可以用火摧毁它。



您是否尝试过将~/Library/Safari文件夹垃圾/移动到一边,看看是否可以解决问题?如果是这样,您可以尝试文件夹中的项目,直到找到罪魁祸首文件为止。
有趣的是,

您如何设置重定向?带有扩展名或Safari中是否有相应的设置?
owlswipe '16

使用私有浏览窗口是否仍会发生重定向?
20:39 AllInOne

@AllInOne一个有趣的想法,但是不幸的是,它仍然在私人浏览下发生。
Haravikk

Answers:


29

根据量子的答案

我无法使用,launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist因为我启用了系统完整性保护

$ launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist
/System/Library/LaunchAgents/com.apple.nsurlstoraged.plist: Operation not permitted while System Integrity Protection is engaged

但是我可以通过执行以下操作来解决此问题:

  • killall nsurlstoraged(停止用户的nsurlstoraged进程;实际上运行了sudo killall nsurlstoraged,但我怀疑也没有必要停止系统的nsurlstorged进程,因为缓存位于用户Library文件夹中)
  • rm -f ~/Library/Cookies/HSTS.plist (删除HSTS缓存)
  • launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist (重新启动nsurlstoraged)

我不能足够赞成这个答案。看来至少在Sierra上,仅删除HSTS.plist文件并不能解决问题,因为它将继续进行重建。然而,杀死后nsurlstoraged除去HSTS文件,该诀窍!
nvahalik

1
非常感谢,反对,但是我是这样做的。1.关闭Safari 2. ~/Library/Cookies/HSTS.plist在http上编辑并删除我想要的网站条目。3.重新启动计算机
Jason S

是的,重新启动是所有其他答案都会给您的建议,但是打开20个应用程序后,重新启动nsurlstoraged进程会更加方便快捷。谢谢@nvahalik!
axello

2
Mojave更新:除非您在系统偏好设置=>安全性和隐私=>隐私中授予对Terminal.app的完全磁盘访问权限,否则该命令rm -f ~/Library/Cookies/HSTS.plist将返回。否则,该解决方案将完美运行!谢谢!Operation not permitted
joehanna

@ nvahalik发生的事情似乎比正在重建的文件更奇怪。甚至没有rm ~/Library/Cookies/HSTS.plist ; touch ~/Library/Cookies/HSTS.plist ; chmod guo-wrx ~/Library/Cookies/HSTS.plist帮助我,但killall nsurlstoraged做到了。
Flash谢里登

6

如果在Safari偏好设置中启用“开发”菜单,则可以从那里清除缓存(CMD + ALT + E)。

您是否可以确认在Safari的“私有”窗口(或其他网络浏览器)中打开设备的控制面板是否正常?


不幸的是,develop菜单选项似乎无法清除重定向,关闭Safari并手动删除也无法清除,~/Library/Caches/com.apple.Safari因此必须将重定向存储在其他位置。HSTS是我不小心启用的功能,但已经删除了~/Library/Cookies/HSTS.plist
Haravikk '16

1
我还可以确认这个答案不能解决问题
malhal

这个为我工作
马修·考利

5

基于@Haravikk的答案:https ://apple.stackexchange.com/a/267783/62907

任何人都知道哪个进程负责〜/ Library / Cookies / HSTS.plist文件?

fs_usage可以帮助:

❯❯❯❯ sudo fs_usage | grep HSTS
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000238   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000009   nsurlstorage
16:11:03  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.016268   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:03  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000011   dbfseventsd
16:11:04  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   fseventsd
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000006   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.000144   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:08  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000021   dbfseventsd
16:11:09  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000042   fseventsd

所以我们可以:

launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

然后:

rm -f ~/Library/Cookies/HSTS.plist

然后再试一次。


谢谢!这对我有用。我删除了HSTS.plist很多次(之前和之后关闭/重新启动Safari),并且始终使用与之前完全相同的内容对其进行重新创建。首先卸载nsurlstoraged,然后删除plist,然后重新启动nsurlstoraged,这给了我一个干净的plist。
lucianf

2
您可以通过提及您需要退出并重新启动Safari使其正常工作来改善这一点。另外,不是删除HSTS.plist,而是删除问题域密钥。
malhal

3

如果使用命令行访问curl设备以确保它没有在进行重定向,则将获得良好的结果。Safari并没有真正重写地址的引擎-特别是如果您进入私人浏览以删除任何历史记录,Cookie等时,尤其如此。

如果您不确定清理的Safari是否足够,还可以通过以下方法进行测试:在Mac上打开系统偏好设置并在Mac上创建一个干净/新的用户帐户,然后在完全干净的Safari版本上测试该网站。 。


绝对没有重定向(我尝试连接的功能根本不支持HTTPS,这就是为什么为整个设备启用HSTS是一个可怕的错误)。我可以从其他用户帐户和浏览器连接得很好,所以在我的主帐户中存储了一些缓存内容:(
Haravikk

“ Safari并没有真正的引擎来重写地址” –目前,在Safari上发生了同样的问题,笔记本电脑上托管了一个网站,并且卷曲(以及Firefox,Chrome和一个私人浏览窗口) Safari)在同一用户帐户上加载网站就可以了。因此,它必须是什么做的Safari本身。
Paul D. Waite

3

因此,我找到了解决该问题的方法,尽管这不是对实际问题的明确答案,所以在找到更多信息之前,我不会将其标记为这样。

事实证明,该文件~/Library/Cookies/HSTS.plist确实是我怀疑的问题的根源,但是即使关闭了Safari,也无法从受影响的用户帐户中删除该文件,因为该文件是在未知的时间后重新创建的,并涉及到违规行为强制无效重定向的条目。

所以我的解决方案是:

  1. 确保Mac上至少有一个其他用户帐户(如果没有,请创建一个)。
  2. 注销受影响的用户帐户。
  3. 登录到其他用户帐户(根据限制,访客帐户可能不够用)。
  4. 找出受影响的用户帐户的简称;如果您不知道,那么最好的检查方法是在“系统偏好设置”->“用户”下查看。通常,如果将全名用小写且没有空格,那么如果您的全名是“ John Smith”,则简称可能是“ johnsmith”。
  5. 在终端中打开一个窗口,键入su shortname“ shortname”替换为受影响的用户帐户的简称。按Enter,然后在出现提示时输入受影响帐户的密码。
  6. 现在键入下一个命令rm ~/Library/Cookies/HSTS.plist并按Enter,这将删除HSTS存储文件。
  7. 最后键入exit,按Enter键并关闭Terminal。

此时,您现在可以重新登录到受影响的用户帐户,并且应该彻底删除有问题的HSTS重定向。

现在,尽管这提供了一种可用的解决方法,但我真的很想知道为什么从受影响的帐户中删除HSTS.plist文件无效。重新创建的事实意味着一定要由后台进程负责,这意味着应该可以通过简单地停止该进程,删除文件然后重新启动该进程来从受影响的用户帐户中删除文件。

任何人都知道哪个进程负责~/Library/Cookies/HSTS.plist文件吗?一旦我们知道应该可以对问题进行更简单的修复。


2

这是个主意!

您说无法通过设置服务器将https请求重定向回http来撤消重定向(因为您没有管理员访问权限)。

但是,如果您诱使 safari连接到提供此反向重定向的其他服务器,该怎么办?

您可以在本地计算机的/etc/hosts文件中进行设置。

例如,假设当前缓存的重定向是从http://example.comhttps://example.com

现在设置或标识一个URL,您可以在世界上从https重定向到http的任何服务器上请求该URL。假设服务器的地址为https://redirecting.example.com

然后查找的IP地址redirecting.example.com。在终端中,您可以这样:

host redirecting.example.com

您得到的结果是这样的:

redirecting.example.com has address 69.69.69.69

现在打开您的/ etc / hosts文件,并添加新行,将对example.com的请求指向redirecting.example.com的IP地址,如下所示:

### point host example.com at the ip address of redirecting.example.com
69.69.69.69 example.com

保存更改,并在终端中清除DNS缓存,如下所示:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; say DNS cache flushed

然后在Safari中,要求https://example.com响应的响应应该是重定向回http://example.com,这时(手指交叉)您6个月前的Safari重定向将被覆盖。

完成后,删除添加到/ etc / hosts文件中的行,然后再次刷新DNS缓存。


尽管这是一个好主意,但并不能解决真正的问题。我不是在寻找解决方法,而是想知道此重定向在何处缓存,以使Safari即使不再有效(该服务器未启用HSTS,但我只是简单地错误地将其启用了)而继续使用它。 )。它必须存储在某个地方,但我不知道在哪里。
Haravikk

这不是我所说的解决方法,因为我希望它可以解决实际的问题。它只能解决您无法控制设备的问题。但是我确实听到您的声音,很高兴能够直接清除缓存的设置。Safari Technology Preview是否也表现出不良行为?
AllInOne

不幸的是,我认为这本身并不是Safari本身的问题,而是它依赖的某些macOS服务,因为确实确实~/Library/Cookies/HSTS.plist是罪魁祸首,但是从受影响的帐户中删除它是行不通的(因为它是重新创建的)一段时间后,完成重定向错误)。虽然不确定执行什么过程。
Haravikk

2

在尝试了所有这些解决方案之后,对我有用的是:

  • 从Safari的历史记录中删除域的所有实例
  • 退出Safari
  • 删除 ~/Library/Cookies/HSTS.plist
  • 重新开始

2

我的新MacOS Mojave 10.14 Beta(18A365a)2美分

a)你不能阻止明确nsurlstoraged,它重新推出在2秒内,即使须藤

b)您不能删除 “ HSTS.plist”:如果键入:

sudo rm -f ~/Library/Cookies/HSTS.plist

您得到:不允许操作

c)即使您尝试:

ls -la ~/Library/Cookies/

您得到:不允许操作

一样

nano ~/Library/Cookies/HSTS.plist 

(空的文件..)

因此,您绝对不能访问它。(也许是SIP吗?)

d)奇怪的是,您可以从Finder中删除

CMD Shift G “〜/图书馆/ Cookies /”

在此处输入图片说明

您可以用鼠标删除:

在此处输入图片说明

E)更奇怪的:你可以使用鼠标移动到桌面的编辑,并把它重新

(一个废话,GUI比sudo更强大。)


2

在Safari,Firefox和Chrome中,您所需要做的就是打开开发人员侧栏,选择“网络”标签,然后禁用cachin g。

在Safari中,这是一条划掉的管子,旁边是垃圾桶徽标的蓝色。激活它,旧的永久重定向应该被忽略。 Safari禁用缓存503永久重定向

最大的好处是您不必弄乱文件,也不会删除所有HTST条目并放宽安全性好处。它也适用于所有浏览器。


虽然这非常有用,但是您能否确认它是否可以作为永久解决方案?即-如果重新启用了缓存,问题是否会重新出现,还是暂时禁用它来刷新它?
哈拉维克

1
@Haravikk在我的测试中,当可以加载新页面时,它不会恢复为使用永久重定向。即使在关闭开发窗口之后,它
仍能

1

首先,请确保服务器发送Strict-Transport-Security标头。
您可以使用curl -I-I仅获取标头)

curl -I http://my-http-domain.com

如果服务器正在发送Strict-Transport-Security标头,则将其从浏览器中删除将不会生效,因为下次您访问该站点时,将再次对其进行设置。

从Safari的Http Secure Transport Security数据库中删除您的站点

  1. 关闭Safari
  2. 编辑~/Library/Cookies/HSTS.plist
    搜索您要通过http访问的站点的条目并将其删除,然后保存文件。
    • 我更喜欢编辑而不是删除,因为不需要删除有效条目。
    • 我使用Xcode编辑plist文件,但是如果未安装,则可以使用文本编辑器。
  3. 重启你的电脑。
    • 您可以重新启动nsurlstoraged而不是重新启动计算机,但是由于SIP可能会涉及到重新启动,因此重新启动计算机可能会更简单。有关重新启动的信息,请参阅Grant的答案Quanta的答案nsurlstoraged

1

我根据Grand Heaslip的回答制作了一个脚本:

#!/bin/sh

osascript -e 'quit app "Safari"'
sleep 2
killall nsurlstoraged
sleep 2
rm -f ~/Library/Cookies/HSTS.plist
launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

它会正常结束safari,停止nsurlstoraged,删除HSTS.plist,然后再次启动nsurlstoraged。这在macOS 10.13.5上对我来说很好


1

我正在使用Mojave(10.14)。我尝试了到目前为止给出的删除HSTS.plist的方法。另外,我需要在显示〜/ Library / Cookies /的内容时将“终端”添加到“系统偏好设置”>“安全性和隐私”>“全盘访问”列表中,以解决“不允许操作”的症状。

但是,删除文件并重新启动守护程序无效。因此,我尝试再次打开Safari,转到“偏好设置”,“隐私”和“管理网站数据”。然后我删除了所有有问题的域名的“缓存cookie,本地存储”。解决了我的问题。

我现在不能说是否需要删除HSTS。


我已经尝试过相同的方法,然后重新启动两次,但是也仅使用Safari的UI即可。谢谢!
Bart Verkoeijen

-1

然后尝试此操作,转到步骤1:转到〜/ Library文件夹,步骤2:从〜/ Library / Application Support中删除Safari文件夹,步骤3:从〜/ Library / Caches删除下面的文件夹,步骤4:然后删除〜/ Library / Safari文件夹PS:在上述操作过程中,关闭了野生动物园


1
关于“与众不同”的答案不仅需要链接。可以包含链接,但请在答案中进行总结或摘录。这个想法是使答案独立存在。
nohillside
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.