Как включить 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. Как мне это исправить?

0 ответов

Другие вопросы по тегам