过去几天我一直在努力解决这个问题,几乎已经应用了我找到的所有解决方案,但我无法解决这个问题。
我有一个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.