Краткая версия этой проблемы заключается в том, что мы видим типичную ошибку CORS (x has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
), но мы абсолютно отправляем указанные заголовки. Запросы прекрасны, но если после n (неопределенного шаблона) количество времени НЕКОТОРЫЕ (без реального шаблона для этого, кроме него случайных 1 или 2 активов, на которые ссылается в html файле), запросы внезапно начнут сбой. При жестком обновлении или отключении кеша проблема устранена.
Нам интересно, как кеширование может повлиять на CORS в этом случае? Или если проблема находится в другом месте?
Мы видим, что актив загружается в первую очередь.
Здесь cURL-представление того, что браузер (хром, не протестированный в другом месте) отправляет на сервер ( облачный экран перед s3):
curl -I 'https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css' -H 'Referer: https://lystable.kalohq.ink/projects/2180?edit=true' -H 'Origin: https://lystable.kalohq.ink' -H 'DPR: 2' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gec
И заголовки в ответ на это выглядят так:
HTTP/1.1 200 OK
Content-Type: text/css
Content-Length: 5632
Connection: keep-alive
Date: Wed, 28 Jun 2017 09:23:04 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Last-Modified: Wed, 28 Jun 2017 09:16:15 GMT
ETag: "ece4babc2509d989254638493ff4c742"
Cache-Control: max-age=31556926
Content-Encoding: gzip
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin,Access-Control-Request-Headers,Access-Control-Request-Method
Age: 3384
X-Cache: Hit from cloudfront
Via: 1.1 adc13b6f5827d04caa2efba65479257c.cloudfront.net (CloudFront)
X-Amz-Cf-Id: PcC2qL04aC4DPtNuwCudckVNM3QGhz4jiDL10IDkjIBnCOK3hxoMoQ==
После этого вы можете некоторое время просматривать сайт, обновлять его несколько раз, и все в порядке и dandy.
Но тогда вы можете обновиться, и вдруг вы увидите ошибку в консоли:
Access to CSS stylesheet at 'https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css' from origin 'https://kalohq.ink' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://kalohq.ink' is therefore not allowed access.
В этот момент, если вы сильно обновите или отключите кеш и перезагрузите страницу, все вернется к работе. Вот почему мы указываем на поведение кэширования браузеров, играя с CORS на этом этапе.
Файл, загружающий эти файлы в HTML, выглядит следующим образом:
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Kalo</title><meta name="description" content="Kalo is used by the best teams on the planet to onboard, manage, and pay their freelancers. "><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Accept-CH" content="Width,DPR,Save-Data"><script>window.performance&&"function"==typeof window.performance.mark&&window.performance.mark("start load bootstrap"),console.log("Kalo v0.214.1 🎉")</script><script type="text/javascript" crossorigin="anonymous">window.webpackManifest={0:"moment-timezone-data.8189aab661847dea1b73.chunk.js",1:"1.7645e36f0742ed31139b.chunk.js",2:"2.bf0a1c9b400d715e3138.chunk.js",3:"3.d077b7a1cede6f6960e6.chunk.js",4:"4.0bbd51f182d8fa3f4951.chunk.js",5:"5.1dcf124ea7874546fc7a.chunk.js",6:"6.85ee04326ef5cfe2c084.chunk.js",7:"7.cf718eabaa3814fcb47c.chunk.js",8:"8.4c4c5b070e09afe037a1.chunk.js",9:"9.ba3b9a5f540f057fca46.chunk.js",10:"10.3c850061770df8801575.chunk.js",11:"11.df971dd9c4ab435fd421.chunk.js",12:"12.81905afa591a4796dcfc.chunk.js",13:"13.0f78c0c77d45cd79ac26.chunk.js",14:"14.f8f9f24d15e1cc4372a1.chunk.js",15:"15.6badd92530b5da668e98.chunk.js",16:"16.ef87b8dc2f87ca2d40a1.chunk.js",17:"17.bf842b852470057c4f0b.chunk.js",18:"18.f091321e6a0bbf16bf1f.chunk.js",19:"19.0297861a162b49308887.chunk.js",20:"20.7281da4b01eb4eb4bf1f.chunk.js",21:"21.781ca5137a9c76031df2.chunk.js",22:"22.c7dfd45fc0bd41c7618d.chunk.js",23:"23.8c4885794fd57453884a.chunk.js",24:"24.1447090b6f41a311414e.chunk.js",25:"25.021a38e680888fe2ac7e.chunk.js",26:"26.1afe06be0d6164d3409a.chunk.js",27:"27.dc70b696039ad4762a3b.chunk.js",28:"28.8c383709ce92ecae6b0c.chunk.js",29:"29.f594eb538f606ae17c50.chunk.js",30:"30.a2c1dfc70e0fac57b2a4.chunk.js",31:"31.2eaee95b85227b23ccd8.chunk.js",32:"32.528e99c8151fef966483.chunk.js",33:"33.c3b7530ab92bc1280136.chunk.js",34:"34.1eb5635dc498ad450839.chunk.js",35:"35.e71c1e7bc6092ff2a35f.chunk.js",36:"36.0d174c67ddb177944140.chunk.js",37:"37.af1c6ed4cde9120da636.chunk.js",38:"38.fb0dd22a16e7b597ef93.chunk.js",39:"39.c17f705a3438de3dc997.chunk.js",40:"40.d509fa240e2adf2888aa.chunk.js",41:"41.37d2f0e0e06a3c7d816b.chunk.js",42:"42.4febbf78adc3084afec3.chunk.js",43:"43.7aa48b320fcf69adb0a3.chunk.js",44:"44.5e6da9391c7412910447.chunk.js",45:"45.a17d5b7c5e534f260841.chunk.js",46:"46.a1d3a7790959ac892ed0.chunk.js",47:"47.241627b0e5da4ce35606.chunk.js",48:"48.84f9532a64f5a3beb20c.chunk.js",49:"49.f8527afe7cade8fc293a.chunk.js",50:"50.776b466f9019479de8fc.chunk.js",51:"51.ca34827c84d4bcc82079.chunk.js",52:"52.517f4f6c63395646cdd7.chunk.js",53:"53.e3a2103e4151cd13300f.chunk.js",54:"athena.5e6c5b01662cea2c8b1a.chunk.js",55:"hera.b69b80db056ad9c9389f.chunk.js",56:"hermes.29bb236b97c128e8b6ee.chunk.js",57:"iris.834233a6fb064bf576a9.chunk.js",58:"hephaestus.7ac71b3274dda739ba1f.chunk.js",59:"59.ce1aefa687f2ef9c9908.chunk.js",60:"60.5070b818882287dfc402.chunk.js",61:"61.19d5149d0a2bd9ef3c1e.chunk.js",62:"62.d7831f900b939591822e.chunk.js"}</script><link rel="shortcut icon" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/favicon.ico'; return false;" crossorigin="anonymous"><link href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css'; return false;" rel="stylesheet" crossorigin="anonymous"><link href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.hermes.689f9795642815d4b8afd20e446a174d.css'; return false;" rel="stylesheet" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/hermes.29bb236b97c128e8b6ee.js'; return false;" as="script" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.hermes.689f9795642815d4b8afd20e446a174d.css'; return false;" as="style" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/allapps.commons.8395b1aa9666e3271c40.js'; return false;" as="script" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css'; return false;" as="style" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/vendor.83e606c69fc5ae7aeb9b.js'; return false;" as="script" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/core/styles/fonts/Fakt-Soft-Pro-SemiBold/FaktSoftPro-SemiBold.1901bce5eea18c64a60693e961585ba1.woff'; return false;" as="font" crossorigin="anonymous"><link rel="preload" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/core/styles/fonts/Fakt-Soft-Pro-Blond/FaktSoftPro-Blond.4ab21e2be2f31a0ab8d798a9c65f99c1.woff'; return false;" as="font" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/hera.b69b80db056ad9c9389f.js'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/iris.834233a6fb064bf576a9.js'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/athena.5e6c5b01662cea2c8b1a.js'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/moment-timezone-data.8189aab661847dea1b73.chunk.js'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.hera.f00a272db8e5756775fb2632e67c1056.css'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.iris.1465dc22f4279c748a04c66f3b4494de.css'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/style.athena.6acb14c0d060121364c9a0cf3e6fa0ad.css'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/_/node_modules/@kalo/ui/icon/fonts/MaterialIcons/MaterialIcons-Regular.012cf6a10129e2275d79d6adac7f3b02.woff'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/core/assets/fonts/MaterialIcons-Regular.012cf6a10129e2275d79d6adac7f3b02.woff'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/_/node_modules/@kalo/ui/icon/fonts/MaterialIcons/MaterialIcons-Regular.570eb83859dc23dd0eec423a49e147fe.woff2'; return false;" crossorigin="anonymous"><link rel="prefetch" href="#" onclick="location.href='https://assets-frontend.kalohq.ink/core/assets/fonts/MaterialIcons-Regular.570eb83859dc23dd0eec423a49e147fe.woff2'; return false;" crossorigin="anonymous"></head><body><main id="app"><!--[if lt IE 8]>
<p class="browserupgrade">You are using an outdated browser. Please <a href="#" onclick="location.href='http://browsehappy.com/'; return false;">upgrade your browser</a> to improve your experience.</p>
<![endif]--><noscript>Kalo - Work without boundaries Please wait a moment as we load Kalo. Please make sure you have Javascript enabled to continue. Kalo’s aim is to give companies complete visibility over their external network.</noscript><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5XLW75" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript></main><div class="root __splash"><style>html{position:static!important;overflow-y:auto}.root{transition:opacity .35s linear;color:#234957;background-color:#f9fafc;position:absolute;top:0;right:0;bottom:0;left:0;opacity:1}.root.exit{opacity:0!important}.navigation{height:60px;background:#fff;border-bottom:1px solid #eceff1}.login{background:#ea5f6e;position:absolute;top:0;left:0;bottom:0;width:50%;display:flex;justify-content:center;align-items:center}@media screen and (max-width:767px){.login{width:100%;right:0}}.hide{display:none!important}.logo{height:107px}</style><div id="navbar" class="navigation hide"></div><div id="login" class="login hide"><div class="logo"><svg width="160" height="70" viewBox="0 0 206 90" xmlns="http://www.w3.org/2000/svg"><title>Kalo</title><path fill-rule="evenodd" fill="#fff" d="M17.629 47.172c2.31 0 4.254-.986 6.078-2.833l18.845-19.706c1.824-1.971 3.89-2.957 6.323-2.957 7.294 0 10.212 9.114 5.835 13.55L35.378 54.562l18.724 19.706c3.283 3.571 3.526 8.498.244 12.07-1.46 1.601-3.406 2.464-5.837 2.464-2.552 0-4.62-.986-6.2-2.834L23.707 65.646c-1.7-1.847-3.647-2.832-5.835-2.832h-1.58v17.612c0 4.804-3.405 8.5-8.147 8.5-4.376 0-8.145-3.942-8.145-8.5V8.498C0 3.695 3.647 0 8.145 0c4.5 0 8.147 3.695 8.147 8.498v38.674h1.337zm97.134 29.56c0 2.586-.972 4.433-2.916 5.789-6.566 4.557-15.077 6.773-25.654 6.773-16.656 0-25.653-9.236-25.653-21.676 0-11.455 8.146-20.076 25.045-20.076 3.891 0 8.39.616 13.496 1.848v-3.326c0-6.528-3.283-9.608-11.55-9.608-3.525 0-7.417.74-11.672 2.095-6.686 2.094-11.185-1.11-11.185-6.405 0-3.572 1.823-6.035 5.35-7.513 4.742-2.094 10.698-3.08 17.871-3.08 17.872 0 26.868 8.376 26.868 25.003v30.176zm-15.682-4.68V60.965c-4.378-1.354-8.39-1.97-12.159-1.97-6.443 0-10.577 3.202-10.577 8.006 0 5.296 4.134 8.252 10.942 8.252 4.5 0 8.51-1.11 11.794-3.203zm39.845 8.904c0 4.803-3.405 8.498-8.147 8.498-4.376 0-8.145-3.941-8.145-8.498V9.15c0-4.803 3.647-8.62 8.145-8.62 4.5 0 8.147 3.817 8.147 8.62v71.806zm57.513 1.359c-5.348 4.681-12.035 7.02-20.06 7.02-7.903 0-14.589-2.339-20.06-7.02-5.471-4.68-8.511-10.715-9.118-17.982-.365-5.788-.365-11.7 0-17.612.607-7.391 3.525-13.426 8.996-18.106 5.472-4.68 12.28-7.02 20.183-7.02 8.024 0 14.71 2.34 20.06 7.02 5.349 4.68 8.389 10.715 8.997 18.106.365 5.789.365 11.7 0 17.488-.608 7.391-3.648 13.427-8.998 18.106zm-7.172-33.009c-.363-7.02-5.229-11.946-12.887-11.946-7.417 0-12.402 4.68-13.01 11.946a69.483 69.483 0 0 0 0 12.318c.608 7.266 5.593 11.946 13.01 11.946 7.416 0 12.4-4.68 12.887-11.946a69.326 69.326 0 0 0 0-12.318z"/></svg></div></div><script>"/login"===window.location.pathname&&-1===document.cookie.indexOf("VIEW=")?document.getElementById("login").classList.remove("hide"):document.getElementById("navbar").classList.remove("hide"),document.querySelector(".__splash.root").id="splash"</script></div><script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Symbol,fetch,Intl.~locale.en&unknown=polyfill"></script><script src="https://apis.google.com/js/client.js" async></script><script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDteWPK1-k97egIjYcX8-Btt8SpRsHit50&libraries=places" async></script><script>!function(e,t,a,n,c,o,s){e.GoogleAnalyticsObject=c,e[c]=e[c]||function(){(e[c].q=e[c].q||[]).push(arguments)},e[c].l=1*new Date,o=t.createElement(a),s=t.getElementsByTagName(a)[0],o.async=1,o.src="https://www.google-analytics.com/analytics.js",s.parentNode.insertBefore(o,s)}(window,document,"script",0,"ga"),ga("create","","auto")</script><script>!function(e,t,a,n,g){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var m=t.getElementsByTagName(a)[0],r=t.createElement(a);r.async=!0,r.src="https://www.googletagmanager.com/gtm.js?id=GTM-5XLW75",m.parentNode.insertBefore(r,m)}(window,document,"script","dataLayer")</script><script>!function(){function t(){var t=a.createElement("script");t.type="text/javascript",t.async=!0,t.src="https://widget.intercom.io/widget/s21m3m5m";var e=a.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e)}var e=window,n=e.Intercom;if("function"==typeof n)n("reattach_activator"),n("update",intercomSettings);else{var a=document,c=function(){c.c(arguments)};c.q=[],c.c=function(t){c.q.push(t)},e.Intercom=c,e.attachEvent?e.attachEvent("onload",t):e.addEventListener("load",t,!1)}}()</script><script type="text/javascript" src="https://assets-frontend.kalohq.ink/vendor.83e606c69fc5ae7aeb9b.js" crossorigin="anonymous"></script><script type="text/javascript" src="https://assets-frontend.kalohq.ink/allapps.commons.8395b1aa9666e3271c40.js" crossorigin="anonymous"></script><script type="text/javascript" src="https://assets-frontend.kalohq.ink/hermes.29bb236b97c128e8b6ee.js" crossorigin="anonymous"></script></body></html>
Что-то здесь следует отметить, что все теги script
и link
имеют crossorigin="anonymous"
. Также обратите внимание на теги предварительной загрузки и предварительной выборки.
Проблема в основном влияет на таблицы стилей, которые кажутся, но сценарии также были затронуты одинаково. Опять же очень странно, что кажется случайным выбором, какие активы сломаются и когда. Учитывая эти два факта, возможно, это даже основано на упорядочении ссылок в документе/порядке загрузки.
Несколько окончательных разъяснений, надеюсь, помогут:
- Активы, поданные с облачного интерфейса перед s3 (см. заголовки ответов)
- В этот момент не было отчетов/тестирования в браузерах, кроме хром, хотя можно, надеюсь, обновить это в ближайшее время
- Все ресурсы script и таблицы стилей предварительно загружаются с помощью
Любая помощь или руководство по этой проблеме будет чрезвычайно оценена. На данный момент это довольно сложно!
Update:
Таким образом, нам удалось получить то, что, как представляется, постоянно работает, без каких-либо очевидных проблем. Трудно знать на 100% без времени из-за кажущегося спорадического/случайного характера проблемы. Мы изменили следующее:
- Обход Cloudfront, чтобы напрямую ссылаться на активы в S3. Что может быть другим?
- Установите
access-control-max-age
в-1
, который отключает это. Мы не ожидаем, что это будет иметь какой-то эффект, потому что это должно только (спецификация чтения) влиять на запросы предварительной проверки, которые не встречаются для запросов GET. - Удалить теги ссылки предварительной загрузки/предварительной выборки.
Теперь мы проводим дополнительное тестирование, чтобы попытаться изолировать один или комбо из них как виновников. Затем мы можем углубиться в то, что там происходит.
Обратите внимание, что это решение оказалось неверным. См. Обновление 2.
Обновление 2:
У нас были дополнительные сообщения и события внутри компании после предыдущего развертывания, которые, по нашему мнению, обошли проблему. Один из них повлиял на предыдущее развертывание, так как проблема в том, что проблема сейчас наблюдается гораздо реже. Снова жесткое обновление исправляет все.
Проблема идентична описанной до сих пор, и до сих пор мы не видели из-за сбоя загрузки JS с момента первого появления - всегда кажется, что файл CSS не работает сейчас.
Обновление 3:
Некоторая довольно важная информация, о которой я не упоминал первоначально, - это изменение, которое произошло во время появления этой проблемы.
В прошлый понедельник мы выпустили репликатор пакетов, приведенный в действие webpack, что означает, что активы стали разделяться между развертываниями. Например, если выходной файл allapps.commons.HASH123.css
не изменился между версиями v1 и v2, тогда мы можем использовать кеширование браузера.
Однако все же происходит то, что script загрузка этих ресурсов в S3 IS в настоящее время тупо загружает и переопределяет исходный файл. Мы были в предположении, что это изменение будет довольно безвредным, поскольку файл имеет одно и то же имя и содержание, но, возможно, это имеет некоторые неблагоприятные последствия?
Другим эффектом этого выпуска стало то, что теперь будет намного больше активов из-за агрессивного расщепления кода, Одно дело отметить, однако, что ни один из асинхронных блоков, похоже, не страдает от одной и той же проблемы (они используют jsonp afterall), и проблема заключается только в том, что ссылки на теги с помощью тегов <script>
и <link>
.
Вы можете найти артефакты сборки релиза PRIOR для разблокированного здесь. И найдите NEW build артефакты текущего активного релиза, в котором показаны редкие проблемы здесь. Вы также можете найти наши сценарии развертывания здесь
Все ресурсы можно найти на диске Google здесь.
Обновление 4:
Эта проблема все еще встречается и теперь сообщается об асинхронном куске, который загружается по требованию. Если посмотреть на время выполнения webpack, эти сценарии загружаются путем добавления на страницу нового тега script, снова с помощью crossorigin="anonymous"
.
Обновление 5:
В каждой сборке мы используем уникальную соль (версию выпуска) при хэшировании имен файлов. Это означает, что никакие активы не распределяются между сборками. Проблема продолжала сохраняться после этого выпуска.
Обновление 6:
Я загрузил файл .har
, показывая эту проблему, возникающую в пользовательском сеансе.
Найдите следующую строку "url": "https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css",
и просмотрите различные запросы, сделанные для этого актива. Вы увидите, что первые несколько из них прекрасны и имеют заголовки, которые вы ожидаете. Последнее вхождение (строка 32624) - это тот, который не удался.
{
"startedDateTime": "2017-06-28T09:40:15.534Z",
"time": 0,
"request": {
"method": "GET",
"url": "https://assets-frontend.kalohq.ink/style.allapps.add899080acbbeed5bb6a7301d234b65.css",
"httpVersion": "unknown",
"headers": [
{
"name": "Referer",
"value": "https://kalohq.ink/account"
},
{
"name": "Origin",
"value": "https://kalohq.ink"
},
{
"name": "DPR",
"value": "2"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 0,
"statusText": "",
"httpVersion": "unknown",
"headers": [],
"cookies": [],
"content": {
"size": 0,
"mimeType": "x-unknown"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 0,
"_error": ""
},
"cache": {},
"timings": {
"blocked": -1,
"dns": -1,
"connect": -1,
"send": 0,
"wait": 0,
"receive": 0,
"ssl": -1
},
"serverIPAddress": "",
"pageref": "page_10"
},
Обновление 7:
Итак, вчера вечером мы нажали изменение, которое везде использовало атрибут crossorigin="anonymous"
. До сих пор мы не видели, как проблема возникает (все еще ждут, учитывая характер проблемы), но видят некоторые интересные и неожиданные ответы от запросов, которые сейчас сделаны. Было бы здорово, если бы мы могли получить разъяснения о том, что именно происходит здесь. Я не думаю, что мы ожидали удаления crossorigin="anonymous"
, чтобы иметь такой эффект или даже понять, почему он был так сломан до того, как наш сервер настроен на отправку правильных заголовков и заголовка Vary
.
Запрос от cli к s3, с заголовком Origin, заголовками откликов cors
curl -I 'https://s3.amazonaws.com/olympus.lystable.com/style.allapps.5ebcc4d28ec238a53f46d6c8e12900d1.css' -H 'Pragma: no-cache' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36' -H 'Accept: text/css,*/*;q=0.1' -H 'Referer: https://asos.kalohq.com/categories' -H 'Connection: keep-alive' -H 'DPR: 1' -H 'Cache-Control: no-cache' -H "Origin: https://kalohq.com" --compressed
HTTP/1.1 200 OK
x-amz-id-2: kxOvBrYsKyZ42wGgJu8iyRZ8q6j5DHDC6QoK1xn2e8FO1wIEEVkxQ0JvGQTmwrN/Njf8EOlmLrE=
x-amz-request-id: DA8B5488D3A7EF73
Date: Thu, 13 Jul 2017 13:27:47 GMT
Last-Modified: Thu, 13 Jul 2017 11:30:50 GMT
ETag: "c765a0a215cb4c9a074f22c3863c1223"
Cache-Control: max-age=31556926
Content-Encoding: gzip
Accept-Ranges: bytes
Content-Type: text/css
Content-Length: 5887
Server: AmazonS3
Запросить мгновение спустя от cli снова до s3 с только заголовком происхождения. Теперь неожиданно возвращает все ожидаемые заголовки cors...
curl -H "Origin: https://kalohq.com" -I https://assets-frontend.kalohq.com/style.allapps.5ebcc4d28ec238a53f46d6c8e12900d1.css
HTTP/1.1 200 OK
Content-Type: text/css
Content-Length: 5887
Connection: keep-alive
Date: Thu, 13 Jul 2017 13:33:09 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: -1
Last-Modified: Thu, 13 Jul 2017 11:30:50 GMT
ETag: "c765a0a215cb4c9a074f22c3863c1223"
Cache-Control: max-age=31556926
Content-Encoding: gzip
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin,Access-Control-Request-Headers,Access-Control-Request-Method
Age: 69
X-Cache: Hit from cloudfront
Via: 1.1 a19c66da9b402e0bee3fd29619661850.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 3wQ7Z6EaAcMscGirwsYVi1M_rvoc1fbI034QY4QZd6IqmlRzLRllEg==
Обновление 8:
Удаление тегов crossorigin="anonymous"
устраняет проблему. Исследование того, почему это внезапно стало проблемой с этой версией, продолжается, так как раньше у нас был этот атрибут в тегах script.
Все ресурсы, полезные в этом расследовании, можно найти на диске Google здесь.