2

我尝试使用操场发送 AMP 电子邮件。AMP 电子邮件本身工作正常,在 localhost 上测试并在 Azure 环境中运行。在 Node/TypeScript 中构建。即使在 AMP 游乐场中,它也会运行,并带有以下 CORS 标头:

res.set('Access-Control-Allow-Origin', 'https://amp.gmail.dev');
res.set('AMP-Access-Control-Allow-Source-Origin', 'amp@gmail.dev');
res.set('Access-Control-Expose-Headers', 'AMP-Access-Control-Allow-Source-Origin');

一旦我从表单发送“GET”请求,它就不会显示任何内容。我将在 Chrome 的网络选项卡中收到的错误:

HTTP/1.1 400 Bad Request
Vary: Origin
Vary: X-Origin
Vary: Referer
Content-Type: application/json+protobuf; charset=UTF-8
{"1":9,"2":"Access-Control-Allow-Origin header value must be one of the acceptable values."}
--batch_eLkTuK4rnSAoy6L5ZSMGCkUK8R4_Ih_c--

我已经尝试过:在 Gmail 的开发人员设置中允许 AMP 电子邮件 > 确定(我确实看到了电子邮件,但在提交表单后它会在网络选项卡中向我抛出错误)

将“Access-Control-Allow-Origin”更改为“ https://mail.google.com ”> 好的,这看起来给了我想要的 JSON。400 bad request 的错误消失了,它显示:

 HTTP/1.1 200 OK
 Content-Type: application/json+protobuf; charset=UTF-8
 Vary: Origin
 Vary: X-Origin
 Vary: Referer

{"3":{"1":3},"4":"{\"body\":\"{\\\"items\\\":[{\\\"cards\\\":[ the content I want. 

但是电子邮件本身不会加载任何内容?需要明确的是,该错误从未出现在电子邮件本身中。就在 Chrome 的网络选项卡中。

编辑:在 gmail 中提交表单后,控制台会给我以下错误:

[amp-form] Form submission failed: Error: Request viewerRenderTemplate failed
Server side html response must be defined
Uncaught (in promise) Error: Server side html response must be defined​​​
4

1 回答 1

1

我想我已经修好了,我做了什么:

  1. 将原点设置为“*”,因此它可以在游乐场和 gmail 中使用。

    res.set('Access-Control-Allow-Origin', '*');
    
  2. Gmail 不接受 svg 图片,但它可以在 Playground 中使用。

  3. Gmail 不接受图片网址中的任何空格,因此您必须使用 %20。
于 2019-12-09T11:40:34.347 回答