【问题标题】:ERROR Response must contain the AMP-Access-Control-Allow-Source-Origin header错误响应必须包含 AMP-Access-Control-Allow-Source-Origin 标头
【发布时间】:2018-06-27 12:09:20
【问题描述】:

响应标头

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token
Access-Control-Allow-Methods:GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:https://www-example-com.cdn.ampproject.org
AMP-Access-Control-Allow-Source-Origin:https://www.example.com
AMP-Control-Expose-Headers:AMP-Access-Control-Allow-Source-Origin
AMP-Same-Origin:true
Cache-Control:no-cache
Content-Length:3
Content-Type:text/html; Charset=utf-8
Date:Thu, 18 Jan 2018 11:47:52 GMT
Server:Microsoft-IIS/8.5
X-Powered-By:ASP.NET
X-Powered-By-Plesk:PleskWin

请求标头

Accept:application/json
Accept-Encoding:gzip, deflate, br
Accept-Language:tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Connection:keep-alive
Content-Length:707
Host:www.example.com
Origin:https://www-example-com.cdn.ampproject.org
Referer:https://www-example-com.cdn.ampproject.org/v/s/www.example.com/amp/gc/hbt.html?usqp=adadadas&amp_js_v=0.1
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1

查询字符串参数

__amp_source_origin:https://www.example.com

不工作 https://www.google.com.tr/amp/s/www.example.com/amp

工作 www.example.com/amp

错误代码

  • 响应必须包含 AMP-Access-Control-Allow-Source-Origin 标头
  • 表单提交失败:错误:响应必须包含 AMP-Access-Control-Allow-Source-Origin 标头​​​​

等待您的帮助

【问题讨论】:

    标签: php forms http-headers cross-domain amp-html


    【解决方案1】:

    在 PHP 中我们可以这样做:

    if(!empty($_POST)){
            $domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]";
            header("Content-type: application/json");
            header("Access-Control-Allow-Credentials: true");
            header("Access-Control-Allow-Origin: ". str_replace('.', '-','https://example.com') .".cdn.ampproject.org");
            header("AMP-Access-Control-Allow-Source-Origin: " . $domain_url);
            header("AMP-Redirect-To: https://example.com/thankyou.amp.html");
            header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin"); 
            echo json_encode(array('successmsg'=>'data post'));
            exit;
    }
    

    请确保域 url 应该是 https

    https://example.com/ 替换为您想要的网址

    【讨论】:

    • 为什么要添加两次 Access-Control-Expose-Headers?
    • @mikeswright49,是的,它需要一次,感谢您纠正我。
    猜你喜欢
    • 2019-05-25
    • 2018-05-18
    • 2018-07-15
    • 1970-01-01
    • 2018-08-01
    • 2015-05-04
    • 1970-01-01
    • 2018-01-06
    • 2020-05-12
    相关资源
    最近更新 更多