🏠 back to Observable

more cross-origin problems recently?

I feel like I have been running into more transient cross-origin failures in Safari than I used to, when one notebook imports from another (e.g. when a notebook tries to import the new ‘inputs’ notebook). After reloading pages a few times, these go away, but it is still kind of frustrating, and I imagine provides an especially confusing/frustrating experience for new visitors who will just think the page is broken.

Here is a screengrab from my browser console. The bottom failure (“Failed to load resource …”) is actually the only one that seems to be breaking anything here.

Edit: here’s the network tab when it fails:

Or when it works:


Hm, I got the same behavior in Firefox, and it turns out to be due to some kind of rate limiting

Apparently the 429 response doesn’t have the cross-origin headers that the page is expecting.

Is this rate limiting based on some behavior I am doing? (e.g. the site might be mad that I subscribed to ~200 Observable authors’ RSS feeds, and my feed reader periodically polls all of them.)

Or is it too many requests from around the web for the same resource? Or …?

I don’t ever get a rate limiting error page for the basic content of notebooks, only for other notebooks that they try to import.

It seems like the more popular of these javascript files from imported notebooks should be cached by the browser, so they don’t have to be reloaded for every new notebook.

There is a JS challenge that happens via Cloudflare at 120 req/min, across all paths. There are a few different ones around searches and logins too. If it’s this one you’re tripping, if you make another browser request by just refreshing the page I believe Cloudflare will inject a JS page to check you’re a real browser then continue and you should be clear afterwards?

Sometimes it takes several refreshes to fix, and maybe waiting a couple minutes? It’s hard to judge exactly what the criteria are.

It might be helpful if the error messages on the notebook page more clearly indicated what the issue was.