Как включить CORS в Chrome. Ошибка предпечатной проверки 405
У меня есть wcf restful-сервис, который мне нужен для работы в Chrome. Я прочитал и добавил все виды заголовков и т. Д., Но ничего не работает. POST отлично работает в IE, но когда я попадаю в Chrome, я получаю ошибку 405 в запросе OPTIONS, сообщающую, что метод не разрешен. Я читал, где некоторые люди добавляли материал в свой файл global.asax, но на самом деле не считают, что это необходимо. У меня даже нет глобального asax-файла, и его создание только с единственной целью - работать с Chrome для разработки - кажется безумным.
Я использую HTTP-клиент Aurelia, который использует простой XMLHttpRequest. Вот как это настроено:
this.Client = new HttpClient()
.configure(x => {
x.withBaseUrl("http://localhost/MyServices/MyService.svc/")
});
И я звоню вот так:
this.Client.post("PostData/" + name,
{
version: 1
})
.then(resp => {
console.log(resp);
})
Вот заголовки, которые я добавил в свой сервис WCF Restful WebConfig:
<add name="Access-Control-Allow-Origin" value="*" />
<!-- Not sure if these even do anything -->
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="OPTIONS, GET, POST" />
Тогда в моем сервисе
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/PostData/{name}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
Data myData(byte id, string name);
Как я уже говорил выше, в IE он работает нормально, но Chrome выдает ошибку перед проверкой. Вот фрагмент ответа скрипача:
HTTP/1.1 405 Method Not Allowed
Entity
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Security
Access-Control-Allow-Headers: Content-Type, Accept, X-Requested-With
Access-Control-Allow-Methods: OPTIONS, GET, POST
Access-Control-Allow-Origin: *
Allow: POST
Я также считаю, что если я добавлю x.withHeader("Content-Type", "application/json; charset=utf-8")
к моей конфигурации Http-клиента, Chrome даже не делает запрос GET. Выдает ошибку.
Подводя итог, я могу делать запросы GET, но не запросы POST в Chrome. Как мне это исправить?