Spaces:
Sleeping
Sleeping
coyotte508
commited on
Commit
·
a45209c
1
Parent(s):
3980956
⚗️ Try & check storage access API
Browse files
server.ts
CHANGED
@@ -11,8 +11,6 @@ app.use(async (ctx) => {
|
|
11 |
ctx.set("Set-Cookie", [
|
12 |
`cookie-none=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=None; Secure`,
|
13 |
`cookie-lax=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=Lax; Secure`,
|
14 |
-
`cookie-none-top-level=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=None; Secure; Domain=hf.space`,
|
15 |
-
`cookie-lax-top-level=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=Lax; Secure; Domain=hf.space`,
|
16 |
]);
|
17 |
ctx.redirect( "/");
|
18 |
} else {
|
@@ -21,15 +19,38 @@ app.use(async (ctx) => {
|
|
21 |
<pre>${JSON.stringify(Object.fromEntries(Object.entries(ctx.request.headers)), null, 2)}</pre>
|
22 |
<p>Cookie SameSite=None: ${ctx.cookies.get("cookie-none")?.replace(/</g, '$lt;')}</p>
|
23 |
<p>Cookie SameSite=Lax: ${ctx.cookies.get("cookie-lax")?.replace(/</g, '$lt;')}</p>
|
24 |
-
<p>Cookie SameSite=None Top-Level: ${ctx.cookies.get("cookie-none-top-level")?.replace(/</g, '$lt;')}</p>
|
25 |
-
<p>Cookie SameSite=Lax Top-Level: ${ctx.cookies.get("cookie-lax-top-level")?.replace(/</g, '$lt;')}</p>
|
26 |
<form method="POST">
|
27 |
<label>Cookie value<br>
|
28 |
<input type="text" name="cookie" />
|
29 |
</label>
|
30 |
<button>Send</button>
|
31 |
</form>
|
|
|
|
|
|
|
32 |
</body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
</html>`;
|
34 |
}
|
35 |
});
|
|
|
11 |
ctx.set("Set-Cookie", [
|
12 |
`cookie-none=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=None; Secure`,
|
13 |
`cookie-lax=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=Lax; Secure`,
|
|
|
|
|
14 |
]);
|
15 |
ctx.redirect( "/");
|
16 |
} else {
|
|
|
19 |
<pre>${JSON.stringify(Object.fromEntries(Object.entries(ctx.request.headers)), null, 2)}</pre>
|
20 |
<p>Cookie SameSite=None: ${ctx.cookies.get("cookie-none")?.replace(/</g, '$lt;')}</p>
|
21 |
<p>Cookie SameSite=Lax: ${ctx.cookies.get("cookie-lax")?.replace(/</g, '$lt;')}</p>
|
|
|
|
|
22 |
<form method="POST">
|
23 |
<label>Cookie value<br>
|
24 |
<input type="text" name="cookie" />
|
25 |
</label>
|
26 |
<button>Send</button>
|
27 |
</form>
|
28 |
+
<p>Browser supports storage access API: <span id="storage-access-api"></span></p>
|
29 |
+
<p>Page can store cookies: <span id="page-can-store-cookies"></span></p>
|
30 |
+
<button id="request-storage-access" style="display: hidden;" type="button">Request storage access</button>
|
31 |
</body>
|
32 |
+
<script>
|
33 |
+
const storageAccess = document.getElementById("storage-access-api");
|
34 |
+
const pageCanStoreCookies = document.getElementById("page-can-store-cookies");
|
35 |
+
const requestStorageAccess = document.getElementById("request-storage-access");
|
36 |
+
if ("hasStorageAccess" in document) {
|
37 |
+
storageAccess.innerText = "Yes";
|
38 |
+
document.hasStorageAccess().then((hasAccess) => {
|
39 |
+
pageCanStoreCookies.innerText = hasAccess ? "Yes" : "No";
|
40 |
+
if (!hasAccess) {
|
41 |
+
requestStorageAccess.style.display = "block";
|
42 |
+
}
|
43 |
+
});
|
44 |
+
} else {
|
45 |
+
storageAccess.innerText = "No";
|
46 |
+
}
|
47 |
+
requestStorageAccess.addEventListener("click", () => {
|
48 |
+
document.requestStorageAccess().then(() => {
|
49 |
+
pageCanStoreCookies.innerText = "Yes";
|
50 |
+
requestStorageAccess.style.display = "none";
|
51 |
+
});
|
52 |
+
});
|
53 |
+
</script>
|
54 |
</html>`;
|
55 |
}
|
56 |
});
|