“此文件被阻止,因为它来自另一台计算机” – ajax权限问题

我通过从我的网站下载的html使用jQuery ajax获取本地xml文件。

问题是每次下载文件时,用户必须右键单击它 – >属性 – >解除阻止。 否则jquery ajax会抛出“权限被拒绝”错误。

有没有办法将文件标记为可信或类似的东西? 我应该在下载文件时在服务器端实现一些东西吗? 或者在保存的html文件中在客户端添加一些东西? 提前致谢。

NTFS文件系统将此标志附加为不安全的标志。 您可以使用Sysinternals中名为Streams的一个实用程序来删除此标志。 您可以从以下位置下载Streams:

http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx

然后使用Process类,您可以在获取文件后运行streams -d 命令以删除此标志。 如何运行它:

 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站点,因此它是官方和可靠的源,它只是一个从文件中删除此标志的实用程序。 我认为你可以做你的工作。

相关: https : //superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a

http://www.k9ivb.net/files/This%20file%20came%20from%20another%20computer%20and%20might%20be%20blocked.pdf

@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来实际编辑它们。

这就是Internet区域标识符的样子:

 [ZoneTransfer] ZoneId=3 

关于这些流的补充阅读: http : //msdn.microsoft.com/en-us/library/ff469212(v =prot.10 )

以及各自的安全区域是:

  • 内联网:ZoneId = 1
  • 可信站点:ZoneId = 2
  • 互联网:ZoneId = 3
  • 受限制的站点:ZoneId = 4

此外,当您打开/关闭会话时IE似乎只读取AFS,因此您无法更改流然后只刷新,您需要创建一个新的IE实例来重新读取新的AFS。

试一试。 打开regedit,查找以下键/值:

HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\附件\ SaveZoneInformation

将此值设置为1并查看问题是否仍然存在。 可能必须退出并重新确认,因为它是HKCU的价值。 您仍然可能再次收到此消息,但如果您使用此值再次取消阻止,则可能会阻止它再次发生。