The OpenStreetMap (Leaflet) map on desktop doesn’t load: instead of the tiles, a block message appears saying “General block: app is not following the tile usage policy of openstreetmap volunteer-run servers”.
Tried shrinking the map to the same size as the mobile variant, but the block still persists.
I’m attaching two pictures (from desktop and from mobile).
Thanks for the help!
(Italian)
La mappa OpenStreetMap (Leaflet) su desktop non si carica: al posto dei tile compare un blocco con messaggio “General block: app is not following the tile usage policy of openstreetmap volunteer-run servers”.
Provato a rimpicciolire la mappa alle stesse dimensioni della variante mobile, ma il blocco persiste comunque.
Allego due immagini (da desktop e da telefono).
sorry for my english but when i use Inspect element, i notice that when I reload the page there aren’t errors but only “200 OK” responses. Furthermore, upon reloading, the map appears, but a fraction of a second later, the “access block” screen shows up.
Just to clarify: our site is not opened as a local file — it’s a production website served over HTTPS by a real web server (Django app), so the browser sends the Referer header normally on every tile request. The “referer missing on local files” case doesn’t apply to us.
My application is a family history program which can export to a static
type of website the whole point of which is it can be copied and passed
round the family, most of whom would be computer illiterate and mention
of a local server would simply force them to put it in the bin.
Typical Instructions for use
Put USB stick in port
Use File Manager
Find the file index.html on the stick
Double click on file or open with web browser
End of
Sometimes we make problems and occasionally we make solutions, I would
like to see someone grasp this particular nettle and propose a simple
solution.
phil
If you can send me your index file (or the html file where the map should show up) and if you are using leaflet or openlayers in there to show the map, we might get you a solution that at least currently works.
As you have defined the tileLayer via http instead of https, modern browsers will block sending a referrer for security reasons (mixed content, leaking https information to non-https targets). And by not sending a referrer because of the mixed-content security concern by most browsers, you do not adhere to the tile usage policy and get blocked.
(I also deleted the deprecated subdomain placeholder {s} that should not be used anymore for tile.openstreetmap.org)
I’m just seeing the same issue myself - I’m developing a few apps that have mapping features for the first time. Since these are Windows and companion Android apps (all for my own personal use, not commercial distribution), and since I don’t know Windows or Android development (my background is in Unix/Linux C development and Java development), I’ve been using Claude Code to build them. Given that, I don’t know all the details of how they are making requests to OpenStreetMaps to fetch tiles. In any case, the app that’s getting this error is one to track fog patterns. I use the Planet.osm file for most of my display needs, but OpenStreetMaps for selecting geographical areas to track. As such, I’m not doing mass tile downloads or anything like that. Still, I got a general 403 block.
I’ve pasted in this thread, plus the wiki rules, into Claude, to see if it can guess why I might be getting the block. I didn’t get the block for the months I’ve been working on this app, it just started in the last few days, so that seems odd.
Any suggestions would be gratefully welcomed, but I’m also researching what I can.
EDIT: Looks like the suggestions here (and in the wiki) fixed it. Here’s the summary (from Claude):
The picker now names its app on every request. It uses the same string each app already sends to the weather service. That string includes your email address, so OpenStreetMap receives it with each tile request. Their policy says a contact address is optional, so I can remove it if you’d prefer.
The tile address is now https://tile.openstreetmap.org/{z}/{x}/{y}.png. A correction: I earlier called the a/b/c server names deprecated, but the policy doesn’t say that. It says to use exactly this address and that other hostnames “may be slower or withdrawn without notice.”
note that these blocks were created in part because vibecoded software was violating Tile Usage Policy
you may want to obtain help from someone who understands relevant part of programming if further vibecoding will be insufficient to stop breaking Tile Usage Policy and other requirements
please reread it and check is your software following it
By “vibecode” do you mean the website/product that’s called that literally, or do you mean using AI tools to create code?
Sadly, at my advanced age (62) and given my huge workload in my real job, learning enough Windows C# GUI development and Android app development sufficient to do what I’m trying to do in anything less than, say, a year or two, would be impossible, which is why I’ve turned to using these tools. I almost never use AI tools for anything, preferring doing things “The old-fashioned way”, so this is a rare break from that personal rule.
In any case, as you can see, I’ve edited the above, since I solved the problem. Though I don’t know these development environments or APIs/libraries, I do keep a tight rein on the ways the code that Claude spits out works, by making sure it doesn’t break service policies, etc. This is the first time I’ve hit such a block/rule.
In any case, I’ll read the policies (I’d skimmed them already, but not read them in full). For tile downloading for caching, etc. I’m using different services than OSM.
software development assisted by artificial intelligence (AI) where the software developer describes a project or task in a prompt to a large language model (LLM) which generates source code automatically. Vibe coding may involve accepting AI-generated code without thorough review of the output, instead relying on results and follow-up prompts to guide changes.
though I would rather consider “accepting AI-generated code without thorough review” as necessary part, and I have seen some using it for cases of “accepting AI-generated code without any review at all”
I guess it depends on what level of review you’re talking about. If I was a strong Windows C# GUI and Android developer, I wouldn’t be using it. Since I have none of those skills, I can only look at the code in a general way (coming from my background in C and Java programming). Is that sufficient review in your mind? That is, looking at the code without those specific skills, watching how the app behaves, and interrogating the AI to get specifics of how things are implemented (eg. does it ever go against OSM’s usage policies, etc)?
Given that I’m using these tools BECAUSE I lack the specific skills that they can provide (not skills, since they’re not human, of course, but “abilities” perhaps), the amount of review I would put into work of my own or other developers using languages, libraries, APIs and development environments I already knew is impossible to do in THIS codebase. I can only use my abilities in a general way to review. :-/
I’m definitely not selling this software to anyone or even giving it away - it’s purely for my own use, so that partially limits any bad effects it might have.
Do I detect a disgust (or distaste) in you about the use of these tools by people who don’t possess the specific skills they’re being used to compensate for?
In the end it’s up to you how you ensure your software is following the policy for using “our” infrastructure. Alternatively set up your own infrastructure.
Personally, I think that referring to “vibecoded software” there is a bit of a red herring. It really doesn’t matter if an AI agent created something in response to a prompt, or if a human agent did it after the receipt of a small fee, or someone copied it from Stackoverflow or similar, or copied it from some API documentation - the person responsible (the person generating the prompt, paying the agent or copying from another source) still needs to read the requirements and either learn enough about the solution to check that they’re meeting them or pay/persuade someone else to do that.
My (limited) experience of this sort of thing** suggested that the “ridiculously inefficient iterative calls” that I was seeing as a small Overpass server hoster weren’t AI per se, but were the result of a human asking for a solution in a “ridiculously inefficient” way.
** both asking a chat agent through a browser how to solve the problem, and using the integration built into XCode in macOS 27.