当前位置: 首页 > 知识库问答 >
问题:

AMP访问控制允许源原点不等于当前值

百里修真
2023-03-14

好吧,这几天来,我一直在用我的脑袋来对付它,在谷歌搜索了好几天之后(当我现在搜索任何与此相关的东西时,有很多紫色链接),我几乎被难住了。表单在我们的域和AMP域都有效,所以也许我应该忘掉它,顺其自然。同时,我希望它是正确的,希望有人能在这里帮助我。

我已经阅读了几次AMP CORS文档,对我来说一切都很好。

在提交表单时,我们所有的表单都返回以下错误。从视觉上看,URL的显示是相同的。我已经将它们粘贴到一个纯文本编辑器中,所有这些看起来都很好。

由于这个错误,我们的表单在提交时会抛出一条错误消息。我们现在刚刚翻转了消息,所以一个错误弹出为成功,这可能不是最大的,因为如果它应该正确地成功,它将抛出一个错误消息。

我们正在运行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)。这里的头加倍了,因为否则它似乎会抛出JSON语法错误,即使在测试之后,上面的错误来自htaccess文件。我还尝试从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个答案

夏侯兴怀
2023-03-14

此标头允许指定的源站读取授权响应。源原点是在“\u amp\u source\u origin”URL参数中指定和验证的值(例如https://publisher1.com").

该值需要是一个允许的原点,而不是一个逗号分隔的允许原点列表,这正是您所提供的。

 类似资料:
  • 我有一个amp list元素,它的src是一个搜索。包含产品信息的php文件。 在验证时,我认为tld没有AMP访问控制允许源代码源标题,尽管我已经设置了一个。以下是php文件: 和html: 我做错了什么?我已经阅读了这里的其他问题,并试图修改我的代码,但没有成功。

  • 如何解决以下错误; 加载资源失败:服务器响应状态为500(内部服务器错误)cdn。安普项目。org/v0。js:68响应必须包含AMP访问控制允许源代码源标题Yd@cdn。安普项目。org/v0。js:68 cdn。安普项目。org/v0。js:68表单提交失败:错误:响应必须包含AMP Access Control Allow Source Origin标头​​​ 报道 遵循CORS上AMP G

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?

  • 我有一个网站,有一个单独的静态文件子域。我发现我需要设置标题,以使某些AJAX功能正常工作,特别是字体。我希望能够从访问静态子域进行测试,以及从子域访问静态子域。简单的解决方案是。我的服务器使用nginx。 您可能不想在响应标题中使用通配符作为,主要原因是什么?

  • 相对来说,我对Ajax还比较陌生,只是负责这个跨域调用。我们的网页上有一个文本框,用户将使用它来执行公司名称的搜索。通过单击文本框旁边的按钮,将请求Ajax调用。不幸的是,web服务位于一个单独的域中,所以这自然会引起问题。 以下是我为完成这项工作所做的最大努力。我还应该注意,这个调用的目的是以XML格式返回结果,这些结果将在请求的< code>success部分进行解析。 这是再次出现错误消息: