ASP.NET Core 2.2 Все вызовы AJAX POST возвращают 404, когда страница находится в iFrame - PullRequest
0 голосов
/ 22 апреля 2019

Когда я выполняю простой вызов AJAX Submit из формы на веб-сайте ASP.NET 2.2, который размещается как iFrame на другом веб-сайте, он всегда возвращает 404.

Когда я делаю тот же звонок, но веб-сайт не находится внутри iFrame, все работает нормально.

Это вызов AJAX, который я использую. PS: я жестко закодировал URL, чтобы избежать проблем с маршрутизацией.

  $(document).ready(function () {
            $('#saveConfiguration').on('click', function (e) {
                e.preventDefault(); // avoid to execute the actual submit of the form.

                var form = $(this).closest('form');
                var url = "https://server/api/external/helloworld";
                $.ajax({
                    type: "POST",
                    url: url,
                    data: form.serialize(), // serializes the form's elements.
                    success: function (data) {
                        alert("success");
                    },
                    error: function (xhr, textStatus, error) {
                        alert(xhr.statusText);
                    }
                });


            });
        });

Это метод API, который я вызываю:

        [HttpPost("HelloWorld")]
        public IEnumerable<string> HelloWorld()
        {
            return new string[] { "value1", "value2" };
        }

Я также внес в белый список главный домен из CORS в файле Startup.cs. Это не помогает.

Плюс добавлено Подавить X Параметры кадра:

services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);

Кто-нибудь сталкивался с этим сценарием? Опять же, это происходит только тогда, когда веб-сайт размещается как iFrame. Когда веб-сайт размещается как главный, у него нет проблем.

1 Ответ

0 голосов
/ 24 апреля 2019

Позже я выяснил причину, по которой это происходит.

Это не связано с какими-либо особенностями ASP.NET Core. Это вызвано тем, что я использую стороннюю библиотеку Atlassian, которая контролирует вызовы AJAX и делает их относительными к домену Atlassian:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...