IE 11 - CORS - 访问被拒绝

时间:2018-04-18 12:51:11

标签: jquery ajax asp.net-mvc-4 cors internet-explorer-11

过去几天我一直在努力解决这个问题,几乎已经应用了我找到的所有解决方案,但我无法解决这个问题。

我有一个ASP.NET MVC应用程序,在IIS7中托管并应用了SSL。 在一个特定的场景中,我必须为没有ssl的同一网站的动作做一个ajax调用,为此我试图在我的网站上实现CORS,但是当我尝试在IE11中进行调用时,我得到Access denied错误并且调用甚至不会出现在开发人员工具的“网络”选项卡中。

我创建了一个全新的应用程序,认为现有的设置可能会搞乱,但仍然没有希望。

我在新应用中的C#操作是一个简单的操作:

    [HttpPost]
    public ActionResult Data()
    {
        return Content("Hello");
    }

使用https打开的我的索引视图如下:

<input type="button" value="Get" onclick="getData();"/>
<script>
function getData() {
$.support.cors = true;
    $.ajax({
        url: "http://example.com/SSLTest/Home/Data",
        type: "POST",
        dataType: "json",
        success: function (e) {
            alert(e);
        },   
error: function(e) {
alert(e.statusText);
   }
    });
}
</script>

我在配置文件中所做的更改如下:

<system.webServer>
<handlers>
 <remove name="OPTIONSVerbHandler"/>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
   <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" responseBufferLimit="4194304" />
</handlers>
 <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  <add name="Access-Control-Allow-Credentials" value="true" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
  </customHeaders>
</httpProtocol>
</system.webServer>

在“Access-Control-Allow-Origin”的web.config中,而不是*我指定了原始网址,就像使用https://但仍然没有希望。

非常感谢您对这方面的任何帮助

当我点击按钮时,javascript的错误部分被执行,传递的参数中有3个元素:

e.readyState = 0
e.status = 0
e.statusText = "Error: Access is denied.

0 个答案:

没有答案
相关问题