Steps to replicate the issue (include links if applicable):
This may be a bit of an elaborate repro, but here it goes:
- clone repo @ https://github.com/nylki/CommonsFinder
- build and run with XCode on a mac (in an iOS simulator)
- go to search tab
- search anything, then open an image
- click the image in the image detail view to load the fullsize image viewer
- at this point the original image should be loaded, but is not anymore. (indicated by "resized" badge)
- check network log -> click on home-tab, click to top-right settings/profile icon -> open "Console"/"Konsole"
What happens?:
Loading the original image file fails reliably with a 429. In a recent test-run to reproduce I did not have many prior network requests that would warrant a 429 I would say (11 prior API requests, 1 thumb image request in 2 seconds).
Thumbnail image requests and API requests do load fine and until a few days ago, loading the original images worked reliably.
Opening the original images in a regular desktop browser works just fine. So it could be some session-based configuration, perhaps some special user-agent handling that changed?
What should have happened instead?:
The original, full-sized image should have been loaded, indicated by the "original" badge in the zoomable viewer.
Other information (browser name/version, screenshots, etc.):
I am the developer of the mentioned iOS app.
Here is a sample of such a failed request (request and response headers) for
https://upload.wikimedia.org/wikipedia/commons/1/18/Berlin_Mitte_June_2023_01.jpg:
Current Request Headers
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9
User-Agent: CommonsFinder/1 (https://github.com/nylki/CommonsFinder) iOS 26.1.0
Response Headers
Access-Control-Allow-Origin: *
Content-Length: 2111
Content-Type: text/html; charset=utf-8
Date: Mon, 29 Dec 2025 15:34:05 GMT
Server: Varnish
Strict-Transport-Security: max-age=106384710; includeSubDomains; preload
access-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache
nel: { "report_to": "wm_nel", "max_age": 604800, "failure_fraction": 0.05, "success_fraction": 0.0}
report-to: { "group": "wm_nel", "max_age": 604800, "endpoints": [{ "url": "https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error&schema_uri=/w3c/reportingapi/network_error/1.0.0" }] }
retry-after: 1000
server-timing: cache;desc="int-front", host;desc="cp3075"
timing-allow-origin: *
x-cache: cp3075 int
x-cache-status: int-front
x-client-ip: [redacted].242.156
x-request-id: 6f1c37dc-e79f-49f6-a940-c63fb2cbbb35