我在这里遇到了大麻烦。我有一个.Net MVC 4应用程序,它使用Kendo UI作为布局基础和上传。上传在所有浏览器上运行正常,除了在Windows Server 2008 RC2 x64
上运行的IE9(9.0) - 我真的不知道这些信息是否重要。
当Kendo尝试发送异步调用时,它给出了错误SCRIPT5: Access Denied
。据kendo UI Foruns的Telerik成员this post称,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 Class
this上设置的。
所以我可以在IE请求的响应标题上看到该标题,因此IE会检索它。我不知道支持 - 特别是在IE中 - 对于值ALLOW-FROM
,如果它接受*
也不知道。但我尝试对该标头使用SAMEORIGIN
值并且它不起作用我有理由:我的WebApi与前端的地址不同。他们'在不同的服务器和addesses。上传内容将直接发送到此网址上的Api:
http://dev.******.com/webserviceapi/api/UserProfile/Upload
前端在:
http://dev.******.com/portal/
两个地址中url中的被抑制内容相同。
所以我没有想到如何实现这一目标。此错误不适合我在网络上找到的任何内容。任何帮助将非常感谢!!提前谢谢。
答案 0 :(得分:3)
我认为这可能是开放状态,
使用此
if (xhr.readyState == 1 /* OPENED */)
这是在服务器端打开,服务器连接打开,请参阅this
如果您使用过来自msdn blog
的课程 public class ValuesController : ApiController
如果该类不公开,那么在CORS之前你也可能会收到错误..
你有没有在博客中看到第二条评论... jQuery.support.cors = true;
您需要对其进行更改以明确支持不支持的跨domai调用,下一条评论说......
that flag tells jQuery to use an alternative object for making cross-domain calls if the browser doesn't natively support it on its XmlHttpRequest implementation. For example, in IE8 that will cause jQuery to switch from XmlHttpRequest to the **XDomainRequest** object (in IE10 they "fixed" it in a way that XmlHttpRequest can be used for all requests). Regardless of the object on the client, the server still needs to "play the game" and return the appropriate headers so that the browser will allow such requests to be made.
是的Teleric团队成员的帖子在逻辑上是完美的,但是每个IE都有自己的方式来处理事件和系统,(痛苦地,这是其中之一...... BUG)我还没有找到IE9的错误列表但有一个链接表明IE8 bugs只是引用,如果相关,这是有用的,因为我们知道我们需要处理.. :)
如果工作正常,请尝试readyState == 2.
我认为必须有一些小东西,你一定不能错过..
上查看同一作者的第二篇文章如果这有助于quirkmode
,请参阅此内容我不是mvc的常规用户,所以无法正确判断其他方面的这种情况。
我正在寻找其他原因,如果找到相关内容会发布。
我希望这会有所帮助......