Итак, на прошлой неделе я опубликовал эту проблему , касающуюся дублирования заголовков.Я исправил эту проблему, я верю, но теперь она возвращает новую ошибку, которую я не могу решить.Я исправил свою последнюю проблему, убрав заголовки, добавляемые во второй раз в PHP функции отправки формы и позволяя им существовать только в htaccess.
Единственный заголовок, который существует в PHP отправки формы, этозначение Content-Type
, равное application/json
.
Когда я отправляю свою форму, отправляющее сообщение появляется нормально.Затем, когда форма отправляет / терпит неудачу, она не передает сообщение, содержащееся в тегах шаблона amp-mustache.
<div submitting>
<template type="amp-mustache">
Form submitting... Thank you for waiting.
</template>
</div>
<div submit-success>
<template type="amp-mustache">
Thanks, your message has been sent successfully.
</template>
</div>
<div submit-error>
<template type="amp-mustache">
Unfortunately your message could not be sent. Please try again later.
</template>
</div>
После небольшого осмотра, кажется, это указывает, что мой Content-Type
не установленна application/json
в моем PHP, который отправляет форму, но когда я проверяю вкладку «Сеть» в Chrome, все выглядит хорошо с точки зрения заголовков.
Заголовки ответа для PHP (xhr-contact-test.php)которая отправляет форму:
access-control-allow-credentials: true
access-control-allow-headers: Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token
access-control-allow-methods: POST, GET, OPTIONS
access-control-allow-source-origin: https://www.craigattachments.com
access-control-expose-headers: AMP-Access-Control-Allow-Source-Origin
amp-access-control-allow-source-origin: https://www.craigattachments.com
cache-control: max-age=604800
cf-railgun: 4d68972973 0.01 0.656948 0030 cc99
cf-ray: 4de04cf54e22ccfe-EWR
content-encoding: br
content-security-policy: default-src * data: blob:; img-src * 'self' data: https: https://static.craigmanufacturing.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: https://cdn.ampproject.org/v0.js https://cdn.ampproject.org/v0/ https://cdn.ampproject.org/viewer/ https://cdn.ampproject.org/v/ https://cdn.ampproject.org/rtv/ https://static.craigmanufacturing.com *.google.com https://maps.googleapis.com/maps/api/js/ https://maps.googleapis.com/maps/api/place/js/ https://cdn.polyfill.io https://cdnjs.cloudflare.com/ajax/; object-src 'self' https://www.craigattachments.com/pdf/; media-src 'self' https://www.craigattachments.com/pdf/; plugin-types application/pdf; style-src 'self' 'unsafe-inline' https://static.craigmanufacturing.com https://cdn.ampproject.org/rtv/ https://fonts.googleapis.com/; base-uri 'self';
content-type: application/json
date: Tue, 28 May 2019 12:41:04 GMT
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
expires: Tue, 04 Jun 2019 12:41:03 GMT
feature-policy: microphone 'none'; payment 'none'; geolocation *; sync-xhr 'self' https://www.craigattachments.com
referrer-policy: same-origin
server: cloudflare
status: 200
strict-transport-security: max-age=31536000
vary: User-Agent
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
Ошибка, которую она передает, указана ниже и указывает на строку 1073 в файле amp-form.js, которая является функцией, которая устанавливает атрибут i-amphtml-rendered
для соответствующих усилителей-усов.тег шаблона.Глядя на это, я подумала, что именно тип содержимого вызвал проблему, но теперь она, кажется, установлена правильно, и ошибка сохраняется.
Uncaught (in обещание) TypeError: b.setAttribute не является функцией
Я открыл свою контактную форму тестирования по этой ссылке: https://www.craigattachments.com/contact-us-test/.
Есть мысли о том, куда мне идти дальше?Я пробовал несколько вещей, таких как проверка на наличие определенных заголовков, установка Content-Type
внутри моего htaccess и установка моих заголовков только в PHP.
Решение для всех, кто зависаетна этом ... Если вы выводите свою электронную почту в виде массива, такого как echo json_encode(array($email));
, эта ошибка возникает.В любом случае, удаление массива из уравнения, по-моему, исправляет его - echo json_encode($email);
Обновление 2019/06/12: Огромное спасибо Аарону.Эта проблема получила некоторые улучшенные параметры обработки ошибок, если кто-то столкнется с этим в будущем: https://github.com/ampproject/amphtml/pull/22576