【发布时间】:2016-11-01 17:27:57
【问题描述】:
我已经解决了几天的 CORS 问题,但我陷入了困境。我有一个 Angular 应用程序试图对 Json 数据进行简单的 HTTP 发布。
我已经按照此处描述的路线:ASP.NET Web API - CORS Support in ASP.NET Web API 2 使用自定义工厂,并且我已将 web.config 设置为:
<handlers>
<remove name="WebDAV"/>
<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" />
</handlers>
我的 $http 后调用:
var serviceEndpoint = "https://mybox/ourservices/myservices/1.0.0.1/api/process";
var requestData ={'FirstName':'Nick','LastName':'Jacobs'};
$http({
method: "POST",
url: serviceEndpoint,
withCredentials: true,
data: requestData,
headers: {
'Content-Type': 'application/json',
'Accept':'application/json'
}
})
.success(function (data, status, headers, config) {
// I need to pick off the user name from the JSON that's returned.
console.log(data);
deferred.resolve(data);
})
.error(function (data, status) {
deferred.reject(data);
});
问题是,我看到了对服务器的飞行前请求,它传递了我的来源,并要求提供适当的标头,但我没有收到任何 CORS 响应标头。如果我进入 web.config 并添加允许的方法,我确实看到它回来了,但是由于我使用 withCredentials 那么我不能使用通配符来源响应标头,我希望工厂描述在上面的 MSDN 文档中将解决我的问题。
任何想法我缺少什么?
谢谢大家!
【问题讨论】:
-
跟踪显示该请求甚至没有进入我的代码。它正在进入我的服务器。 (Win10 上的所有完整 IIS)。