Заголовок ответа CORS для AMP-FORM (отправка формы всегда заканчивается ошибкой) - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть асинхронная форма усилителя, результатом которой всегда является ошибка отправки. Я почти уверен, что проблема в заголовке ответа. Я не первый, кто имеет дело с этим.

Моя форма:

<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;
    }
...