amp cdn & cors запросы к ресурсам - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю над проектом, в котором защита ресурсов (здесь: веб-шрифты) является законным требованием, и CORS считается достаточным. Доступ к защищенным ресурсам CORS кажется невозможным через AMP CDN.

как мы обращаемся с Cors в начале координат

Для защищенных ресурсов мы проверяем заголовок запроса Origin: на соответствие регулярному выражению и генерируем соответствующий заголовок ответа Access-Control-Allow-Origin: для совпадения плюс Vary: Origin всегда.

По существу (упрощенный, сокращенный пример):

->

HTTP/1.1 200 OK
Cache-Control: public, immutable, max-age=26680348
Access-Control-Allow-Origin: https://allowed.domain
Vary: Origin, Accept-Encoding

->

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

Это просто простые CORS.

как ведет себя усиленный cdn

Теперь, когда я запускаю тот же запрос к соответствующему URL AMP CDN ...

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, как показано выше.

Еще более запутанно то, что amp cdn отправляет следующий ответ:

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

Итак, как CORS должен работать с ресурсами в AMP CDN?

1 Ответ

0 голосов
/ 13 февраля 2019

Это была актуальная проблема AMP CDN. Я работал 1: 1 с контактами из Google, которые решили проблему.

Кроме того, наш источник не отправил Content-Type заголовок ответа, который требуется.

...