Use the /exec URL. The /dev URL only works while you are signed in to the script editor.
Access must be “Anyone”. “Anyone with a Google Account” adds an authentication redirect that can break browser delivery.
Redeploy after edits. Apps Script only serves a code change after Deploy → Manage deployments → Edit → New version.
Authorize during deployment. After clicking Deploy, Google may show “Authorization required”. Sign in, approve access, and if “Google hasn’t verified this app” appears choose Advanced → Go to [your project] (unsafe) → Allow. This is expected for your own script. If the URL panel disappears, open Deploy → Manage deployments to retrieve it.
No “Anyone” option? A Google Workspace admin policy may be blocking anonymous web apps. Use a personal Google account or ask the admin. “Anyone with a Google Account” is not equivalent and will break guest uploads.
CORS is handled by a simple request. CaspiaDrop sends JSON as text/plain so the browser skips the preflight that Apps Script cannot answer. The gateway still replies with JSON via ContentService.
Large files are welcome. Files are sent in 4 MiB chunks and written to Drive with a resumable upload. Keep the guest tab open until delivery completes.
A note on privacy. The password feature is a friendly front-door deterrent, not encryption. The gateway URL is inside the share link and could be inspected by a technical recipient.