AMP-Access-Control-Allow-Source-Origin不等于当前

时间:2019-05-24 10:58:34

标签: php .htaccess cors amp-html

好的,几天来我一直在打我的头,经过广泛的谷歌搜索(当我现在搜索与此相关的内容时,有很多紫色的链接)让我很沮丧。该表格在我们的域名和AMP域名中都可以使用,所以也许我应该克服它,顺其自然。不过同时,我希望它是正确的,因此希望有人可以在这里帮助我。

我已经读过AMP CORS documentation几次,对我来说一切似乎都很好。

提交表单时,我们所有的表单都会返回以下错误。在视觉上,URL看起来相同。我已经将它们粘贴到纯文本编辑器中,并且在那里看起来也不错。

enter image description here

由于此错误,我们的表单在技术上会在提交时引发错误消息。我们现在才翻转消息,以便成功弹出一个错误,这似乎不是最大的问题,好像它应该正确地成功执行一样也会抛出错误消息。

我们正在从htaccess文件中运行标头,下面是该代码。

<IfModule mod_headers.c>
Header set Access-Control-Allow-Credentials "true"
#Header set Access-Control-Allow-Origin "static.craigmanufacturing.com"
#Header set Access-Control-Allow-Origin "https://www-craigattachments-com.cdn.ampproject.org"
#Header set Access-Control-Allow-Origin "https://www-craigattachments-com.amp.cloudflare.com"
SetEnvIf Origin "https://(static.craigmanufacturing.com|www-craigattachments-com.cdn.ampproject.org|www-craigattachments-com.amp.cloudflare.com|https://cdn.ampproject.org)$" AccessControlAllowOrigin=$0$1
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Source-Origin "https://www.craigattachments.com"
Header set Access-Control-Expose-Headers AMP-Access-Control-Allow-Source-Origin
Header set AMP-Access-Control-Allow-Source-Origin "https://www.craigattachments.com"
</IfModule>

任何人都对为什么我们会收到我可能会丢失的错误有任何想法?您可以在这里尝试我们的联系表格:https://www.craigattachments.com/contact-us-所有邮件都发送到只有我可以访问的收件箱,因此不必担心被击中。

如果需要的话,我会很乐意提供更多详细信息,因为我肯定会忘记一些关键细节,因为此时我的大脑对此问题感到困惑。

编辑:这也是发送表单后的PHP(删除了我的一些细节和HTML)。在这里将标头加倍,因为否则,即使经过测试以上错误来自htaccess文件,它似乎也会引发JSON语法错误。我还尝试过从htaccess中删除标头,并将其仅包含在PHP中。

<?php

header("Access-Control-Allow-Headers:Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token");
header("Access-Control-Allow-Methods:POST, GET, OPTIONS");
header("Access-Control-Allow-Origin:".$_SERVER['HTTP_ORIGIN']);
header("Access-Control-Expose-Headers:AMP-Access-Control-Allow-Source-Origin");
//header("AMP-Access-Control-Allow-Source-Origin:https://".$_SERVER['HTTP_HOST']);
//header("AMP-Access-Control-Allow-Srouce-Origin:https://www.craigattachments.com");
header("AMP-Access-Control-Allow-Source-Origin:".$_REQUEST['__amp_source_origin']);
header("Content-Type: application/json");
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_STRICT);

set_include_path("." . PATH_SEPARATOR . ($UserDir = dirname($_SERVER['DOCUMENT_ROOT'])) . "/pear/share/pear" . PATH_SEPARATOR . get_include_path());
require_once "Mail.php";
require_once "Mail/mime.php";

$host = "###";
$username = "###";
$password = "###";
$port = "###";
$to = "###";
$email_from = "###";
$email_name = $_POST['fullname'];
$email_subject = $_POST['subject'];
$email_body = $_POST['message'];
$email_address = $_POST['sender_email'];

?>

<?php

$html_email = '';
$crlf = "\n";


echo json_encode(array($email_subject, $email_address, $html_email, $email_name));

$headers = array ('From' => $email_name . "<" . $email_from . ">", 'To' => $to, 'Subject' => $email_subject, 'Reply-To' => $email_address);
$smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password));

$mime = new Mail_mime($crlf);
$mime->setHTMLBody($html_email);

$html_email = $mime->get();
$headers = $mime->headers($headers);

list($user,$domain) = explode('@', $email_address);

$mail = $smtp->send($to, $headers, $html_email);

?>

Edit2:我更新了代码,以包括已注释掉的其他尝试。

1 个答案:

答案 0 :(得分:1)

  

此标头允许指定的源来源读取授权响应。源来源是在“ __amp_source_origin” URL参数中指定并验证的值(例如,“ https://publisher1.com”)。

该值必须是允许的来源,而不是您要提供的允许的来源的逗号分隔列表。