Storage probeSpeicher-Probe
Two questions that decide whether the recovery page can offer more than one storage service, and whether a backup can still be fetched when a gateway will not answer: do Pinata and Lighthouse talk to a page at all (CORS, without a server of ours), and does anybody on IPFS hold a CID at an address a browser can dial?
Zwei Fragen, die entscheiden, ob die Recovery-Seite mehr als einen Speicherdienst anbieten kann und ob eine Sicherung auch dann erreichbar ist, wenn ein Gateway schweigt: Sprechen Pinata und Lighthouse überhaupt mit einer Seite (CORS, ohne Server von uns), und hält irgendwer im IPFS-Netz eine CID unter einer Adresse, die ein Browser wählen kann?
The CORS checks need no credentials: they are sent with a deliberately invalid key. A browser blocks a cross-origin request before it is answered, so an answer of any kind — even 401 — is the proof, and a blocked request is the refusal. A real upload is a separate step further down, with a key you paste yourself.
Die CORS-Prüfungen brauchen keine Zugangsdaten: Sie gehen mit einem absichtlich ungültigen Schlüssel hinaus. Ein Browser blockiert eine fremde Anfrage, bevor sie beantwortet wird — jede Antwort, auch 401, ist also der Beweis, und eine blockierte Anfrage ist die Absage. Ein echter Upload ist ein eigener Schritt weiter unten, mit einem Schlüssel, den nur du einfügst.
CORS is decided per origin. What this page measures counts for the address in the bar below, and a result from localhost says little about nikrause.github.io.
CORS gilt pro Herkunft. Was diese Seite misst, gilt für die Adresse unten, und ein Ergebnis von localhost sagt wenig über nikrause.github.io.
This pageDiese Seite
StepsSchritte
ResultsErgebnisse
Nothing measured yet.Noch nichts gemessen.
Optional: a real upload, with your own keyOptional: ein echter Upload, mit deinem eigenen Schlüssel
A key pasted here stays in this browser's localStorage and is sent to that vendor and nowhere else — this page has no server. It is also unscoped: whoever has it can list and delete everything in that account. Use a key you can revoke.
Ein hier eingefügter Schlüssel bleibt im localStorage dieses Browsers und geht nur an diesen Anbieter — diese Seite hat keinen Server. Er ist außerdem unbeschränkt: Wer ihn hat, kann in dem Konto alles auflisten und löschen. Nimm einen Schlüssel, den du widerrufen kannst.
Lighthouse is pay once, kept for ever, and deleting refunds nothing. Every upload here spends real money on permanent storage. Do not run it on somebody else's key.
Lighthouse zahlt einmalig, behält für immer, und Löschen erstattet nichts. Jeder Upload hier gibt echtes Geld für dauerhaften Speicher aus. Nicht mit fremden Schlüsseln ausführen.
How to read the resultSo liest man das Ergebnis
| Observation | Meaning |
|---|---|
| A status came back — even 401 or 404 | CORS is fine for this origin: the browser let the answer through. The status is about the key or the CID, not about reachability. |
| TypeError: Failed to fetch | The browser blocked it. Either no CORS headers, or the host is unreachable from here — the two look identical to a page, which is why step 1 exists. |
| An upload endpoint is blocked, although a GET to the same host answers | The service allows the preflight and then forgets the header on its error answer. Measured on Pinata, 23 September 2026: the preflight says Allow-Origin: *, the 401 carries nothing. Only a real upload with a valid key decides whether success answers differently. |
| The same router answers, then is blocked minutes later | Not your network: delegated-ipfs.dev sends the CORS header only sometimes on /providers. Measure more than once, and ask the second router too. |
| Step 1 blocked as well | The network or this browser is the cause, not the vendor. Nothing else on this page means anything until it passes. |
| Providers found, 0 browser-dialable | The bytes are on IPFS but only behind TCP or QUIC. A page cannot fetch them directly, so a gateway stays the only way in. |
| Providers found, some wss, webtransport or webrtc-direct | A browser could dial them and bitswap the blocks — the fallback in funkpost#127 is possible for this CID. |
| No providers at all | Nobody announced it, or the router does not know yet. For a fresh upload, retry in a few minutes before concluding anything. |
| Beobachtung | Bedeutung |
|---|---|
| Ein Status kam zurück — auch 401 oder 404 | CORS passt für diese Herkunft: Der Browser hat die Antwort durchgelassen. Der Status sagt etwas über Schlüssel oder CID, nicht über Erreichbarkeit. |
| TypeError: Failed to fetch | Der Browser hat blockiert. Entweder fehlen die CORS-Kopfzeilen, oder der Host ist von hier nicht erreichbar — für eine Seite sieht beides gleich aus, und genau dafür gibt es Schritt 1. |
| Ein Upload-Endpunkt ist blockiert, obwohl ein GET an denselben Host antwortet | Der Dienst erlaubt den Preflight und vergisst die Kopfzeile dann bei der Fehlerantwort. Gemessen an Pinata am 23. September 2026: Der Preflight sagt Allow-Origin: *, die 401 trägt nichts. Nur ein echter Upload mit gültigem Schlüssel zeigt, ob eine Erfolgsantwort anders ausfällt. |
| Derselbe Router antwortet, Minuten später blockiert er | Nicht dein Netz: delegated-ipfs.dev sendet die CORS-Kopfzeile auf /providers nur manchmal. Mehrfach messen — und den zweiten Router mitfragen. |
| Schritt 1 ebenfalls blockiert | Dann liegt es am Netz oder an diesem Browser, nicht am Anbieter. Bis Schritt 1 durchgeht, bedeutet der Rest nichts. |
| Provider gefunden, 0 browser-wählbar | Die Bytes liegen im IPFS-Netz, aber nur hinter TCP oder QUIC. Eine Seite kann sie nicht direkt holen; ein Gateway bleibt der einzige Weg. |
| Provider gefunden, einige mit wss, webtransport oder webrtc-direct | Ein Browser könnte sie wählen und die Blöcke per Bitswap holen — der Rückfallweg aus funkpost#127 ist für diese CID möglich. |
| Gar keine Provider | Niemand hat sie angekündigt, oder der Router weiß es noch nicht. Bei einem frischen Upload erst nach ein paar Minuten erneut fragen. |