4

我在这里遇到了大麻烦。我有一个使用 Kendo UI 作为布局基础和上传的 .Net MVC 4 应用程序。上传在所有浏览器上都可以正常工作,除了在 a 上运行的 IE9 (9.0) Windows Server 2008 RC2 x64-我真的不知道这些信息是否重要

SCRIPT5: Access Denied当 Kendo 尝试发送异步调用时,它给了我错误。根据kendo UI Foruns 中 Telerik 的成员的这篇帖子iframe,Kendo 创建了一个使之前版本的 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 与前端不在同一个地址上。他们在不同的服务器和地址。上传内容直接发送到此 url 上的 Api:

http://dev.******.com/webserviceapi/api/UserProfile/Upload

前端在:

http://dev.******.com/portal/

两个地址的 url 中的隐藏内容相同。

所以我不知道如何实现这一目标。这个错误不适合我在网上找到的任何东西。任何帮助将不胜感激!!先感谢您。

4

1 回答 1

3

我想可能是打开状态,

用这个

if (xhr.readyState == 1 /* OPENED */)

这是在服务器端打开的,服务器连接打开了,参考这个

如果您使用过msdn 博客中的此类

public class ValuesController : ApiController

如果该课程不是公开的,那么您也可能会在 CORS 之前遇到错误..

你看到博客里的第二条评论了吗……

jQuery.support.cors = true;您需要更改它以使其明确支持不支持跨域调用,下一条评论说...

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 Team Member 的帖子在逻辑上是完美的,但是每个 IE 都有自己处理事件和系统的方式,(痛苦的是,这是其中之一..BUG)我还没有找到 IE9 的错误列表,但有一个说明IE8 错误的链接仅在相关时引用,这很有用,因为我们知道我们需要处理什么.. :)

尝试 readyState == 2 如果效果好的话..

我想一定有一些小东西你一定错过了..

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

如果这有助于quirkmode ,请参考

我不是 mvc 的普通用户,所以无法正确判断这种情况的其他方面..

我正在寻找其他原因,如果找到相关的东西会发布..

我希望这个能帮上忙...

于 2013-06-17T10:32:21.077 回答