MicroBlocks supports only simple HTTP servers (and, for various techical reasons, that isn't likely to change). Unfortunately, most modern browsers block plain HTTP requests made from a page served over HTTPS such as https://snap.berkeley.edu/snap/snap.html.
So how do we allow Snap! to communicate with MicroBlocks boards via HTTP?
The simplest way is to run Snap! with plain HTTP: http://extensions.snap.berkeley.edu/snap.html.
It turns out there is another solution that works only in Chrome: give Snap! permission to use "mixed content" or "insecure content" (i.e. to make HTTP requests from an HTTPS page). Details here: https://docs.adobe.com/content/help/en/target/using/experiences/vec/troubleshoot-composer/mixed-content.html
A similar solution is also possible in Firefox, but there the process is more cumbersome and, since Firefox doesn't remember the setting, you have to repeat it each time you open Snap! Details here: https://support.mozilla.org/en-US/kb/mixed-content-blocking-firefox#w_mixed-content-is-not-blocked-not-secure. Note that in order to be given the option to permit mixed content you must first attempt to make an HTTP request from Snap!. (That confused me at first.)
For browsers such as Safari that don't have an option to allow mixed content, you must run Snap! from http://extensions.snap.berkeley.edu/snap.html. That may be the simplest solution for other browsers as well.
If you plan to do a lot of work that involves Snap! making HTTP calls to MicroBlocks but you also use Snap! for other things, you may want to stick with Chrome and enable insecure content for the Snap! website.
Browser are constantly changing, so other work-arounds for this problem may appear in the future.