amp cdn&cors请求资源

问题描述 投票:0回答:1

我正在开发一个项目,保护资源(这里:webfonts)是法律要求,CORS被认为是足够的。通过AMP CDN访问受CORS保护的资源似乎是不可能的。

how we handle cors at the origin

对于受保护的资源,我们针对正则表达式检查Origin:请求标头,并始终为匹配加上Access-Control-Allow-Origin:生成匹配的Vary: Origin响应标头。

本质上(简化,简化示例):

  • curl -H 'Orgin: https://allowed.domain' -I https://site/.../font.woff2

->

HTTP/1.1 200 OK
Cache-Control: public, immutable, max-age=26680348
Access-Control-Allow-Origin: https://allowed.domain
Vary: Origin, Accept-Encoding
  • curl -H 'Orgin: https://evil.domain' -I https://site/.../font.woff2

->

HTTP/1.1 200 OK
Cache-Control: public, immutable, max-age=26680348
Vary: Origin, Accept-Encoding

这很简单CORS。

how the amp cdn behaves

现在,当我针对相应的AMP CDN URL发出相同的请求时......

curl -H 'Orgin: https://allowed.domain' -I https://site.cdn.ampproject.org/r/s/site/.../font.woff2

我看到了一个请求

User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Google-AMPHTML)

从IP解析到google-proxy-*.google.com,但既没有Origin:也没有AMP-Same-Origin:请求标题。然而,我读到https://github.com/ampproject/amphtml/blob/master/spec/amp-cors-requests.md#pseudo-cors-logic的方式我应该至少期待。

如果Origin:以cdn.ampproject.org结尾似乎并不重要,cdn似乎没有转发它。

因此,如上所述,我们的起源响应200而没有A-C-A-O。

更令人困惑的是,放大器cdn将此响应发送到下游:

HTTP/2 404 
access-control-allow-origin: *
x-content-type-options: nosniff
...

那么,CORS如何与AMP CDN上的资源配合使用呢?

cors amp-html
1个回答
0
投票

这是一个真正的AMP CDN问题。我已经与谷歌的联系人以1:1的比例工作,他们已经解决了这个问题。

此外,我们的起源没有发送Content-Type响应标头,这是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.