我通过从我的网站下载的html使用jQuery ajax获取本地xml文件。
问题是,每次下载文件时,用户都必须右键单击它 - >属性 - >解除封锁。否则jquery ajax会抛出“权限被拒绝”错误。
有没有办法将文件标记为可信任或类似的东西?我应该在下载文件时在服务器端实现一些东西吗?或者在保存的html文件中添加客户端的内容?提前谢谢。
答案 0 :(得分:6)
NTFS文件系统将此标志附加为不安全标志。您可以使用Sysinternals中名为Streams的一个实用程序来删除此标志。您可以从以下网址下载Streams:
http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx
然后使用Process class,您可以在获取文件后运行streams -d <file.xml>
命令删除此标志。如何运行它:
Process runcommd = new Process();
runcommd.StartInfo.FileName = "streams";
runcommd.StartInfo.Arguments = " -d \"fullpath\\file.xml\"";
runcommd.StartInfo.UseShellExecute = false;
runcommd.StartInfo.CreateNoWindow = false;
runcommd.StartInfo.RedirectStandardError = true;
runcommd.StartInfo.RedirectStandardOutput = true;
runcommd.StartInfo.RedirectStandardInput = true;
// now run it
runcommd.Start();
// be sure that we end
runcommd.StandardInput.Flush();
runcommd.StandardInput.Close();
Streams来自MS站点,因此它是官方和可靠的源,它只是一个从文件中删除此标志的实用程序。我认为你可以做你的工作。
答案 1 :(得分:1)
@Aristos在备用文件流问题上是现实的,但是这可以在不使用外部EXE(streams.exe)的情况下完成。对于稍后查看此内容的任何其他人,您可以运行以下命令来清空备用文件流(AFS):
echo. > my_blocked_file.zip:Zone.Identifier
假设my_blocked_file.zip的文件名将清空AFS的内容。此外,您可以发出dir /r
列出AFS和notepad my_blocked_file.zip:Zone.Identifier
以实际编辑它们。
这就是互联网区域标识符的样子:
[ZoneTransfer]
ZoneId=3
关于这些流的补充阅读: http://msdn.microsoft.com/en-us/library/ff469212(v=prot.10)
并且各自的安全区域是:
此外,当您打开/关闭会话时,IE似乎只读取AFS,因此您无法更改流然后只是刷新,您需要创建一个新的IE实例来重新读取新的AFS。
答案 2 :(得分:0)
试一试。打开regedit,查找以下键/值:
HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\附件\ SaveZoneInformation
将此值设置为1并查看问题是否仍然存在。可能必须退出并重新确认,因为它是HKCU值。您仍然可能会再次收到此消息,但如果您使用此值再次取消阻止,则可能会阻止它再次发生。