IE9 X-Frame-Options deny upload

4
我在这里遇到了大麻烦。我有一个使用Kendo UI作为布局基础和上传的.NET MVC 4应用程序。上传在所有浏览器上都可以正常工作,除了在运行在Windows Server 2008 RC2 x64上的IE9(9.0)上 - 我不知道这些信息是否重要。
当Kendo尝试发送异步调用时,它会给我报错“SCRIPT5:Access Denied”。根据Telerik成员在kendo UI论坛中的这篇帖子,Kendo创建一个iframe以使在IE10之前的版本上实现异步上传。
我尝试在api的webconfig中添加了一个头:
<customHeaders>
    <add name="Access-Control-Allow-Credentials" value="true" />
    <add name="X-Frame-Options" value="ALLOW-FROM *"/>
</customHeaders>

其他的CORS标头是在像这个API上的CORS Handler类中隐式设置的。此链接。因此,我可以在IE请求的响应标头中看到此标头,所以IE确实检索了它。我不知道支持值ALLOW-FROM的支持情况,特别是在IE中,也不知道它是否接受*。但我尝试使用SAMEORIGIN值来设置该标头,但它不起作用,原因是我的WebApi与前端不在同一地址上。它们位于不同的服务器和地址。上传直接发送到此URL上的API:http://dev.******.com/webserviceapi/api/UserProfile/Upload。而前端在http://dev.******.com/portal/上。因此,我不知道如何实现这一点。此错误与我在网上找到的任何内容都不符合。非常感谢您的帮助!提前致谢。
1个回答

3
我认为可能是打开的状态,
使用这个:
如果 (xhr.readyState == 1 /* 打开 */)
这在服务器端是打开的,服务器连接已经打开,请参考this 如果你从msdn博客中使用了这个类, public class ValuesController : ApiController 如果该类不是公共的,则也可能会出现错误.. 在CORS之前..
你看到博客中的第二条评论了吗?
jQuery.support.cors = true; 你需要更改它以显式支持不支持跨域调用,下一个评论说...
那个标志告诉jQuery在浏览器没有本地支持XmlHttpRequest实现的情况下,使用替代对象进行跨域调用。例如,在IE8中,这将导致jQuery从XmlHttpRequest切换到XDomainRequest对象(在IE10中,他们以一种方式“修复”了它,使得XmlHttpRequest可以用于所有请求)。无论客户端上使用的对象如何,服务器仍然需要“玩游戏”,返回适当的标头,以便浏览器允许进行此类请求。
是的,Teleric团队成员的帖子在逻辑上是完美的,但每个IE都有自己处理事件和系统的方式(痛苦的是,这是其中之一..BUG)。我还没有找到IE9的错误列表,但有一个链接IE8 bugs,只需参考即可,因为我们知道我们需要处理什么.. :)
如果readyState == 2正常工作,请尝试。
我认为你可能会错过一些小东西。

请参考同一作者的第二篇文章msdn博客

如果有帮助,请参考quirkmode

我不是mvc的常规用户,所以无法恰当地评估这种情况的其他方面。

我正在寻找其他原因,如果找到相关内容将会发布。

希望这能有所帮助...


谢谢你,我同意可能是一个小细节问题。我会仔细查看你的帖子,并尽快告诉你结果。再次感谢你。 - DontVoteMeDown

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