在Safari浏览器中禁用同源策略

87

为了开发目的,我需要在我的机器上禁用Safari(在Windows下)中的同源策略。

在Chrome中,可以通过使用标志--disable-web-security来实现。在Safari中是否有等效的标志或隐藏设置?

7个回答

105

如果你想在Safari(我使用的是9.1.1版本)中禁用同源策略,那么你只需要启用开发者菜单,然后从开发菜单中选择“禁用跨源限制”。


5
这是正确答案。您需要重新加载网页。 - TlmaK0
23
针对德国人:"Deaktivieren Sie ursprungsübergreifende Beschränkungen" - Alex
4
无法使用。在 Safari 11.0.3 上禁用跨域限制后仍然无效。 - user285594
运行得非常好! - levelone
这对我在Safari 12.0.3上有效。我还必须清除缓存(使用快捷方式或在开发者菜单中-->清空缓存)+重新加载网页,如@TlmaK0所建议的那样。 - Mario Kurzweil
我不认为这是一个“解决方案”,因为苹果公司破坏了浏览器市场的很大一部分。你不能指望数百万人在阅读StackOverflow后禁用他们的安全策略。坦率地说,这会破坏第三方集成,而且我可能不得不把几周的工作(以及三家公司之间的大量故障排除)都白费了。 - PJ Brunet

48

较新版本的Safari允许您禁用跨域限制。只需要从“首选项>>高级”启用开发者菜单,然后从开发者菜单中选择“禁用跨域限制”即可。

如果您仅需要本地文件,请启用开发者菜单,然后从开发者菜单中选择“禁用本地文件限制”即可。


6
这个菜单项位于“开发”菜单中,需要在偏好设置的“高级”下启用“在菜单栏中显示‘开发’菜单”。但它似乎无法解决CORS问题。 - Pyrolistical
44
同源策略和本地文件限制并非同一回事,这个回答没有正确回答问题。 - Andrew Plummer
1
您可以关闭本地文件限制,但是对于测试具有同源策略问题的跨浏览器内容,请使用Firefox或Chrome。对于Chrome和OS X,请参见此处:https://dev59.com/QnA75IYBdhLWcg3wy8Ui#6083677 - Kjell
2
这个答案似乎对一些人在运行本地文件方面有帮助。但它无法解决CORS问题。我建议你提供一个可供投票的解决方案,而不是给它点踩。 - skymook
1
我想在Mac OSX上禁用Safari的Web安全性,这可能吗? - RaviPatidar
显示剩余4条评论

11

跳转到,

Safari -> 首选项 -> 高级

然后在底部勾选 在菜单栏中显示“开发”菜单

然后在“开发”菜单中勾选 禁用跨源限制


2
它可以在桌面版Safari上运行,但如何在移动设备上打开此选项? - kolonitsky
不确定移动版Safari是否有相同的选项。但是在“设置”->“Safari”->“高级”中,您可能会找到一些内容。 - Pramodya Abeysinghe
对于移动设备的iOS Safari,请参见此答案 - samurai_jane

5

1
可以确认的是,遗憾的是Safari没有命令行参数。https://discussions.apple.com/thread/8044532 - Max MacLeod

2

在Safari 9中有一个选项可以禁用跨域限制,这与上述的本地文件限制不同。


2

如果您正在使用Mac上的Develop菜单,通过将iPhone插入Mac并检查手机上的网站来调试iOS Safari,则如果禁用跨域限制选项变灰,按照以下步骤进行操作。

  • 在Mac上单击Safari菜单
  • 单击偏好设置...
  • 单击隐私选项卡
  • 取消防止跨站点跟踪复选框
  • 刷新您的手机页面
  • 在您完成工作后,请在计算机上贴上便笺以提醒您重新勾选复选框

(已在iOS 15.3.1和桌面Safari 14.0.1上测试)


1
这对我不起作用(ios15.3.x和macos 13.0.1,safari 16.1),菜单项仍然是灰色的。我必须在检查时点击小电话图标,并从那里禁用CORS(这确实有效)。 - Soylent Graham

1

这些答案大多已经过时了。最新的Safari 14.0.2(在2021年)有一个选项可以禁用跨域限制,但是如果路径名为../../这种类型的路径,则无法正常工作;即使Safari正确地解析为本地文件路径,它仍然不允许加载该文件,尽管该文件存在。这是Safari 14中最近出现的错误,在13中没有发生。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接