I've identified what may be bug or feature request, or at least a case of another item to add to the list of things which can make dashlets fail.
I have an Apache 2.4 server which has multiple virtual hosts using different SSL certificates.
Apache used not to support multiple SSL certs from different domains at all, but now it does it in effect because browsers specify which domain they want the SSL cert for. If a server has two certs installed "domainone.com" and "domaintwo.com" the user's browser needs to specify it wants to use the cert for "domaintwo.com", otherwise the server will provide whichever one comes earliest in the server config. This is apparently called Server Name Indication (SNI)(https://en.wikipedia.org/wiki/Server_Name_Indication)
If using wget or cURL, SNI does not happen by default.
Therefore, in my situation where I am using CiviCRM over an https connection, the dashlets will not load because they are loaded via cURL (I believe), and cURL will receive an error because it is using the wrong SSL certificate to connect.
In theory this could be because of an old version of cURL installed on the server, but I have checked and that isn't the case.
I believe it's more likely to be that the code needs to use something like SSL context options
SNI_enabled boolean and
SNI_server_name (http://php.net/manual/en/context.ssl.php), although I'm not sure how that integrates with using PHP's curl functions.
As you can see, I haven't delved into the code to work out if this is all right.
Could someone give me their thoughts on whether they agree this is the problem, and whether a code change would be beneficial?
On a completely separate note - given that dashlets seem to be a persistent issue that can conflict with server configuration or minor user config file errors - wouldn't it be better to just rewrite them to use AJAX?