Я включил CORS для Web API 2, но PATCH по-прежнему заблокирован с помощью Azure Mobile JS SDK - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть бэкэнд WEB API 2, использующий Azure Mobile SDK для моих контроллеров, унаследовавший TableController от SDK, довольно просто.

  public class ProjectItemController : TableController<ProjectItem>

Затем я использую JavaScript SDK для получения, публикации, исправления и удаления элементов из моей системы.

Все отлично работает, кроме ПАТЧ для обновления элемента.Я должен использовать глагол PATCH, поскольку он является частью SDK и автоматически привязан к методам контроллера как на стороне контроллера Web API, так и на стороне клиента SDK.

Контроллер:

public Task<ProjectItem> PatchProjectItem(string id, Delta<ProjectItem> patch)
    {
         return UpdateAsync(id, patch);
    }

SDK на стороне клиента:

var updateItem = {
    id: '7163bc7a-70b2-4dde-98e9-8818969611bd',
    name: 'My New Name'
};

table
    .update(updateItem)
    .done(function (updatedItem) {
        // You can now update your cached copy
    }, failure);

Я не контролирую использование VERB в эфире этих методов, они оба автоматически используют PATCH в соответствии с SDK.

Моя настройка CORSкак указано в Web API 2 Startup.MobileApp:

HttpConfiguration config = new HttpConfiguration();

              var cors = new EnableCorsAttribute("*","*","*");
              config.EnableCors(cors);

            new MobileAppConfiguration()
                .UseDefaultConfiguration()
                .ApplyTo(config);

Кто-нибудь еще может получить PATCH, работающий на CORS, как этот?

РЕДАКТИРОВАТЬ: Вот ошибка консоли, которую я получаю в Chrome:

Access to XMLHttpRequest at ’https://mywebsite..com/tables/project/d6a1c225176f4683921b324708fbef28' from origin ‘http://localhost:44348’ has been blocked by CORS policy: Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.
...