2sxc CustomWebApi включить CORS - PullRequest
       8

2sxc CustomWebApi включить CORS

0 голосов
/ 23 сентября 2018

Я создаю свой собственный webapi, унаследованный от SxcApiController, но когда я пытаюсь использовать этот API из другого домена, я получаю сообщение:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

У меня есть следующие атрибуты в методе моего контроллера:

[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]

Я называю свой метод следующим образом:

    $.ajax({  
        url: apiurl,  
        type: 'POST',
        //headers: {
        //  'Access-Control-Allow-Origin': '*'
        //},
        //crossDomain: true,
        dataType: 'json',  
        data: data,  
        success: function (d) {  
            debugger;
            alert("Saved Successfully");  
        },  
        error: function (d) {  
            debugger;
            alert("Error please try again");  
        }  
    });

, если я включаю crossDomain и добавляю заголовок, ошибка изменяется на:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Я думаю, что SxcApiController унаследован от DNNApi Controller, а также не знаю, как включить CORS на DNN

Что еще мне не хватает, чтобы включить CORS для этого метода?

============== edit 1 ================

Я добавил это в web.config, где находится api:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />

и теперьошибка:

401 (Unauthorized)

Что еще мне не хватает?

============== edit 2: Теперь все в порядке ================

Я добавил эти атрибуты в свой метод, и теперь все в порядке:

[HttpPost]
[AllowAnonymous]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]

1 Ответ

0 голосов
/ 26 сентября 2018

Отлично, звучит так, будто вы заставили его работать + это не было проблемой CORS.

Точно так же, как некоторая дополнительная информация: если вы действительно хотите включить CORS с аутентификацией для других доменов, вам нужно будет углубиться, потому что в этом сценарии браузер выполнит предварительнуюПолет, чтобы действительно проверить, разрешено ли включать аутентификацию и куки в запрос.Это то, что IMHO DNN не предоставляет, и вам придется включить его, используя магию asp.net - в основном, либо создав специальный обработчик запросов для предварительной проверки, либо используя перезапись заголовка asp.net в web.config.

...