Ошибка CORS при попытке отправить форму AMP в приложение Azure Logic

У меня есть простая веб-страница AMP с формой, которую я хочу отправить в приложение Azure Logic. Я загружаю

<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>

в моей HTML-голове, поэтому я могу использовать AMP, встроенные в проверку формы.

Однако, когда я отправляю форму, я получаю следующую ошибку ...

Access to fetch at 'https://prod-logic-app-url' from origin 'https://www.example.com' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

В приложениях Azure Logic Apps нет настроек, связанных с CORS, и я не знаю, как отправлять измененные или дополнительные заголовки из форм AMP.

Обновлять. Я выяснил, как установить заголовки ответов из моего приложения логики, но получаю точно такую ​​же ошибку

введите описание изображения здесь


person Paul Hale    schedule 17.12.2019    source источник
comment
Как выглядят заголовки предполетного запроса / ответа? Действительное значение происхождения включает также протокол (https:// в вашем случае), а не только домен.   -  person Jan Garaj    schedule 03.01.2020


Ответы (2)


Эта проблема возникла только что при попытке преобразовать модуль MailChimp плагина WordPress Jetpack для совместимости с AMP.

На исходной странице без AMP отправка формы приводит к тому, что эта fetchSubscription() функция становится вызвал:

XHR открывается для https://public-api.wordpress.com/rest/v1.1/sites/…, и WordPress.com REST API включает ответ:

Access-Control-Allow-Origin: *

Итак, добавьте еще два заголовка ответа, как показано ниже:

AMP-Access-Control-Allow-Source-Origin: https://example.com
Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin

Для получения дополнительных сведений обратитесь к этой проблеме.

person Joey Cai    schedule 18.12.2019
comment
Как я могу добавить эти заголовки ответов из приложения Logic? - person Paul Hale; 29.12.2019
comment
После дальнейших экспериментов я убедился, что приложения Logic Apps изначально не поддерживают CORS. Я собираюсь создать приложение-функцию, поскольку они поддерживают CORS и проксируют вызов через приложение Logic. Отправлю ответ с результатами (после того, как я немного посплю) - person Paul Hale; 29.12.2019

Единственный способ заставить это работать - создать приложение-функцию Azure. Я настроил CORS в приложении-функции, а затем прокси-сервер в приложении Logic.

person Paul Hale    schedule 05.01.2020