AMP 电子邮件 | CORS Headers 问题?在操场上工作,而不是在 Gmail 中工作
AMP Email | CORS Headers issue? Works in playground not in Gmail
我尝试使用 playground 发送 AMP 电子邮件。 AMP 电子邮件本身工作正常,在本地主机上测试并在 Azure 环境中运行。内置 Node/TypeScript。即使在 AMP 操场上,它也能运行,具有以下 CORS headers:
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.
但是 e-mail 本身不会加载任何东西?需要明确的是,错误永远不会出现在 e-mail 本身中。就在 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
我想我已经修复了它,我做了什么:
将 origin 设置为“*”,这样它就可以在 playground 和 gmail 中使用。
res.set('Access-Control-Allow-Origin', '*');
Gmail 不接受 svg 图片,但它可以在 Playground 中使用。
- Gmail 不接受图片中的任何空格 url,因此您必须使用 %20。
我尝试使用 playground 发送 AMP 电子邮件。 AMP 电子邮件本身工作正常,在本地主机上测试并在 Azure 环境中运行。内置 Node/TypeScript。即使在 AMP 操场上,它也能运行,具有以下 CORS headers:
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.
但是 e-mail 本身不会加载任何东西?需要明确的是,错误永远不会出现在 e-mail 本身中。就在 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
我想我已经修复了它,我做了什么:
将 origin 设置为“*”,这样它就可以在 playground 和 gmail 中使用。
res.set('Access-Control-Allow-Origin', '*');
Gmail 不接受 svg 图片,但它可以在 Playground 中使用。
- Gmail 不接受图片中的任何空格 url,因此您必须使用 %20。