У меня есть асинхронная форма усилителя, результатом которой всегда является ошибка отправки. Я почти уверен, что проблема в заголовке ответа. Я не первый, кто имеет дело с этим.
Моя форма:
<form method="get" action="https://www.duofinance.cz/moduly/ampSearchResult" action-xhr="https://www.duofinance.cz/moduly/ampSearchResult" target="_top" class="searchForm" id="searchForm">
<input type="search" name="findKeywordInput" required>
<input type="hidden" value=".." name="articleUrl">
<button id="findKeywordButton">Vyhledat</button>
<div submitting>
</div>
<div submit-success>
</div>
<div submit-error>
</div>
</form>
Я прочитал все эти статьи о CORS в AMP, но все еще безрезультатно. Не кэшированная версия AMP на моем сервере работает нормально. Нет необходимости говорить, что я «пишу в журнал» в начале и в конце моего сценария, и он работает хорошо. Таким образом, проблема должна быть где-то между ответом сервера и его интерпретацией.
Мой PHP:
$origin=$_SERVER['HTTP_ORIGIN'];
$sameOrigin=$_SERVER['HTTP_AMP_SAME_ORIGIN'];
$allowed_domains = [
'https://www.duofinance.cz',
'https://www-duofinance-cz.cdn.ampproject.org',
'https://www-duofinance.cz.amp.cloudflare.com',
];
if ($origin && in_array($origin, $allowed_domains)) {
header('Content-Type: application/json');
header('Cache-Control: no-cache');
header('Access-Control-Allow-Credentials', 'true');
header('Access-Control-Allow-Origin: '.$origin);
$validOrigin=1;
}