Angularjs PUT 和 DELETE 在 IE11 的 PreFlight 上中止

Angularjs PUT 和 DELETE 在 IE11 的 PreFlight 上中止

我们的 AngularJs WebApp 通信CORS针对 IIS 中托管的 WebApi 服务执行 CRUD 操作SSL,并要求证书。所有动词 - GET、POST、PUT、DELETE,在 Chrome 中均可用,但...IE11 仅 GET 和 POST 可用。DELETE 和 PUT 总是返回 Aborted Preflight 和“Access Denied”。

在我们的 WebApi 端,我们已经像这样启用了 CORS:

var webApiConfig = new HttpConfiguration();
webApiConfig.formatters.JsonFormatters.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain"));
webApiConfig.formatters.JsonFormatters.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain"));
SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
webApiConfig.EnableCors(new EnableCorsAttribute("*","*","*","*"){ SupportsCredentials=true});

在应用程序 CONFIG 部分的 Angular 上,我们拦截 $httpProvider 并添加如下标头:

        $httpProvider.defaults.withCredentials = true;
        $httpProvider.defaults.headers.post['Content-Type'] = 'text/plain';
        $httpProvider.defaults.headers.put['Content-Type'] = 'text/plain';

然后我们会打电话

$http.delete(urlPrefix + '/api/members/' + id)
                    .then(function (res) {
                        return res.data;
                    });

任何帮助都将不胜感激。

相关内容