1

We are working on a single page webapp app using Angular JS 1.5, Django 1.7 hosted on Heroku with resources hosted on Cloudfront.

Sometimes some user experience that our css isn't being loaded. A hard refresh solves the problem. We weekly deploy a new version of the app, but that is not always the moment the problem re-occurs. The attribute crossorigin="use-credentials" is added to the link tag to our css in base.html.

Our users mainly use Chrome (Windows & Linux), so I can't say if the problem is also present in other browsers.

Errors in the console

CSS stylesheet from origin 'https://xxx.cloudfront.net' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://app.foobar.com' is therefore not allowed access.
XMLHttpRequest cannot load https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://app.foobar.com' is therefore not allowed access.

But the network tab with the requests shows that origin header is present but with the warning: 'Provisional headers are shown'

"CAUTION: provisional headers are shown" in Chrome debugger suggests that possibly a browser plugin is blocking the request, so I looked at chrome://net-internals at the events tab. At first I had some (possible) blocking plugins which I disabled.

The request

Request URL:https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css
Request Method:GET
Status Code:200 OK (from cache)
Remote Address:54.230.15.113:443
Response Headers
Age:16460
Cache-Control:max-age=1314000
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 04 Oct 2016 07:03:31 GMT
Expires:Fri, 27 Sep 2041 16:39:47 GMT
Last-Modified:Mon, 03 Oct 2016 16:41:26 GMT
Server:AmazonS3
Vary:Accept-Encoding
Via:1.1xyz.cloudfront.net (CloudFront)
X-Amz-Cf-Id:YQwFzOSQ2Be1khH0eHi4wwYpgtj8Q3Y7C_ylqwDfULjEMG9tSuFVmw==
X-Cache:Hit from cloudfront
Request Headers
Provisional headers are shown
Origin:https://app.foobar.com
Referer:https://app.foobar.com/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/52.0.2743.116 Chrome/52.0.2743.116 Safari/537.36

The events

347949: URL_REQUEST
https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css
Start Time: 2016-10-04 14:17:03.743

t=4656 [st= 0] +REQUEST_ALIVE  [dt=51]
t=4658 [st= 2]    URL_REQUEST_DELEGATE  [dt=0]
t=4658 [st= 2]   +URL_REQUEST_START_JOB  [dt=14]
                  --> load_flags = 33024 (MAYBE_USER_GESTURE | VERIFY_EV_CERT)
                  --> method = "GET"
                  --> priority = "HIGHEST"
                  --> url = "https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css"
t=4659 [st= 3]      URL_REQUEST_DELEGATE  [dt=0]
t=4659 [st= 3]      HTTP_CACHE_GET_BACKEND  [dt=0]
t=4659 [st= 3]      HTTP_CACHE_OPEN_ENTRY  [dt=13]
t=4672 [st=16]      HTTP_CACHE_ADD_TO_ENTRY  [dt=0]
t=4672 [st=16]      HTTP_CACHE_READ_INFO  [dt=0]
t=4672 [st=16]      URL_REQUEST_DELEGATE  [dt=0]
t=4672 [st=16]      URL_REQUEST_FILTERS_SET
                    --> filters = "FILTER_TYPE_GZIP"
t=4672 [st=16]   -URL_REQUEST_START_JOB
t=4672 [st=16]    URL_REQUEST_DELEGATE  [dt=2]
t=4674 [st=18]    HTTP_CACHE_READ_DATA  [dt=8]
t=4685 [st=29]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4686 [st=30]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4690 [st=34]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4694 [st=38]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4696 [st=40]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4698 [st=42]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4699 [st=43]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 6170
t=4700 [st=44]    HTTP_CACHE_READ_DATA  [dt=1]
t=4701 [st=45]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4701 [st=45]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4703 [st=47]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                  --> byte_count = 32768
t=4706 [st=50]    CANCELLED
t=4707 [st=51] -REQUEST_ALIVE

But the css isn't loaded (CANCELLED).

After a hard refresh, the events are as follows:

349289: URL_REQUEST
https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css
Start Time: 2016-10-04 14:23:14.081

t=205845 [st=  0] +REQUEST_ALIVE  [dt=132]
t=205845 [st=  0]    URL_REQUEST_DELEGATE  [dt=0]
t=205845 [st=  0]   +URL_REQUEST_START_JOB  [dt=43]
                     --> load_flags = 33025 (MAYBE_USER_GESTURE | VALIDATE_CACHE | VERIFY_EV_CERT)
                     --> method = "GET"
                     --> priority = "HIGHEST"
                     --> url = "https://xxx.cloudfront.net/vendor/vendor.f2b1f43b27a2.css"
t=205846 [st=  1]      URL_REQUEST_DELEGATE  [dt=0]
t=205846 [st=  1]      HTTP_CACHE_GET_BACKEND  [dt=0]
t=205846 [st=  1]      HTTP_CACHE_OPEN_ENTRY  [dt=7]
t=205853 [st=  8]      HTTP_CACHE_ADD_TO_ENTRY  [dt=1]
t=205854 [st=  9]      HTTP_CACHE_READ_INFO  [dt=8]
t=205863 [st= 18]      URL_REQUEST_DELEGATE  [dt=0]
t=205863 [st= 18]     +HTTP_STREAM_REQUEST  [dt=16]
t=205863 [st= 18]        HTTP_STREAM_REQUEST_STARTED_JOB
                         --> source_dependency = 349307 (HTTP_STREAM_JOB)
t=205879 [st= 34]        HTTP_STREAM_REQUEST_BOUND_TO_JOB
                         --> source_dependency = 349307 (HTTP_STREAM_JOB)
t=205879 [st= 34]     -HTTP_STREAM_REQUEST
t=205879 [st= 34]     +HTTP_TRANSACTION_SEND_REQUEST  [dt=0]
t=205879 [st= 34]        HTTP_TRANSACTION_SEND_REQUEST_HEADERS
                         --> GET /vendor/vendor.f2b1f43b27a2.css HTTP/1.1
                             Host: xxx.cloudfront.net
                             Connection: keep-alive
                             Cache-Control: max-age=0
                             Origin: https://app.foobar.com
                             User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/52.0.2743.116 Chrome/52.0.2743.116 Safari/537.36
                             Accept: text/css,*/*;q=0.1
                             DNT: 1
                             Referer: https://app.foobar.com/
                             Accept-Encoding: gzip, deflate, sdch, br
                             Accept-Language: en-US,en;q=0.8,nl;q=0.6
                             If-Modified-Since: Mon, 03 Oct 2016 16:41:26 GMT
t=205879 [st= 34]     -HTTP_TRANSACTION_SEND_REQUEST
t=205879 [st= 34]     +HTTP_TRANSACTION_READ_HEADERS  [dt=8]
t=205879 [st= 34]        HTTP_STREAM_PARSER_READ_HEADERS  [dt=7]
t=205886 [st= 41]        HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                         --> HTTP/1.1 304 Not Modified
                             Connection: keep-alive
                             Date: Tue, 04 Oct 2016 12:23:13 GMT
                             Access-Control-Allow-Origin: https://app.foobar.com
                             Access-Control-Allow-Methods: GET, HEAD
                             Access-Control-Max-Age: 600
                             Access-Control-Allow-Credentials: true
                             Cache-Control: max-age=1314000
                             Expires: Fri, 20 Sep 2041 15:55:26 GMT
                             Server: AmazonS3
                             Vary: Accept-Encoding,Origin,Access-Control-Request-Headers,Access-Control-Request-Method
                             Age: 19823
                             X-Cache: Hit from cloudfront
                             Via: 1.1 e1199ec506dcf179c3e277ddd6c51498.cloudfront.net (CloudFront)
                             X-Amz-Cf-Id: wLxxeqDY8Jis1aua46vmQAyt-RO4UOmyK0ac8Qd4i0EOxxMB5WDaQQ==
t=205887 [st= 42]     -HTTP_TRANSACTION_READ_HEADERS
t=205887 [st= 42]      HTTP_CACHE_WRITE_INFO  [dt=0]
t=205888 [st= 43]      URL_REQUEST_DELEGATE  [dt=0]
t=205888 [st= 43]      URL_REQUEST_FILTERS_SET
                       --> filters = "FILTER_TYPE_GZIP"
t=205888 [st= 43]   -URL_REQUEST_START_JOB
t=205888 [st= 43]    URL_REQUEST_DELEGATE  [dt=3]
t=205891 [st= 46]    HTTP_CACHE_READ_DATA  [dt=6]
t=205897 [st= 52]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205898 [st= 53]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205906 [st= 61]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205907 [st= 62]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205908 [st= 63]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205917 [st= 72]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205918 [st= 73]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 6170
t=205922 [st= 77]    HTTP_CACHE_READ_DATA  [dt=3]
t=205925 [st= 80]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205925 [st= 80]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205926 [st= 81]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205928 [st= 83]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205929 [st= 84]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205930 [st= 85]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205931 [st= 86]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205933 [st= 88]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205934 [st= 89]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 25314
t=205935 [st= 90]    HTTP_CACHE_READ_DATA  [dt=12]
t=205948 [st=103]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 28672
t=205948 [st=103]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205972 [st=127]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205972 [st=127]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205975 [st=130]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205976 [st=131]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 32768
t=205977 [st=132]    URL_REQUEST_JOB_FILTERED_BYTES_READ
                     --> byte_count = 22121
t=205977 [st=132]    HTTP_CACHE_READ_DATA  [dt=0]
t=205977 [st=132] -REQUEST_ALIVE

And the css is loaded successfully, and also for every successive soft refresh.

Any suggestions why this problem occurs irregular and what we can do to fix this or some pointers to investigate?

AFV
  • 11
  • 2

0 Answers0