xyTom / Url-Shorten-Worker

A URL Shortener created using Cloudflare worker
https://lnks.eu.org
MIT License
1.55k stars 1.19k forks source link

避免公开 根路径 / 导致被其它人滥用 #38

Closed crazypeace closed 1 year ago

crazypeace commented 2 years ago

在访问 根路径 / 时,返回404 只有在访问一个秘密路径时,才返回正常的使用页面

修改说明: https://zelikk.blogspot.com/2022/07/url-shorten-worker-hide.html

部署教程: https://zelikk.blogspot.com/2022/07/url-shorten-worker-hide-tutorial.html

crazypeace commented 2 years ago

支持自定义短链

https://zelikk.blogspot.com/2022/07/url-shorten-worker-custom.html

API 不公开服务

https://zelikk.blogspot.com/2022/07/url-shorten-worker-api-password.html

crazypeace commented 2 years ago

页面缓存设置过的短链

https://zelikk.blogspot.com/2022/08/url-shorten-worker-localstorage.html

长链接文本框预搜索localStorage

https://zelikk.blogspot.com/2022/08/url-shorten-worker-bootstrap-list-group-oninput.html

增加删除某条短链的按钮

https://zelikk.blogspot.com/2022/08/url-shorten-worker-delete-kv-localstorage.html

xyTom commented 1 year ago

感谢贡献代码,由于新增功能较多,故我觉得可以成为完全独立的一个版本,所以创建了一个新的分支用于合并。

目前Url-Shorten-Worker共有两个版本:

原版:https://github.com/xyTom/Url-Shorten-Worker/ crazypeace 修改版: https://github.com/xyTom/Url-Shorten-Worker/tree/crazypeace

用户可根据自身情况选择需要的版本进行部署

再次感谢crazypeace贡献代码,也欢迎其他的朋友提交pull request贡献代码!

crazypeace commented 1 year ago

你好! 其它的功能性的东西, 合不合并看个人对项目的定义和取舍. 但是有一个地方, 关于API的接口的定义和使用方法, 想和你探讨一下.

你的代码, 不管成功还是失败, 返回的status都是200, 找到key了, API返回的就是key; 没找到key, API返回的key里面实际上填写的是错误信息. image

我的修改: 状态码要表示这个API操作是否成功. 如果成功, 状态码是200, key里面有找到的key; 如果失败, 状态码是错误码, error里面有错误信息. image

其实, 我这里也许也有不合规范的地方. 如果是删除, request.method 就不应该是 "POST", 而应该是"DELETE" 是吧?

xyTom commented 1 year ago

你好! 其它的功能性的东西, 合不合并看个人对项目的定义和取舍. 但是有一个地方, 关于API的接口的定义和使用方法, 想和你探讨一下.

你的代码, 不管成功还是失败, 返回的status都是200, 找到key了, API返回的就是key; 没找到key, API返回的key里面实际上填写的是错误信息. image

我的修改: 状态码要表示这个API操作是否成功. 如果成功, 状态码是200, key里面有找到的key; 如果失败, 状态码是错误码, error里面有错误信息. image

其实, 我这里也许也有不合规范的地方. 如果是删除, request.method 就不应该是 "POST", 而应该是"DELETE" 是吧?

是的,你提出的API接口定义确实要规范一些,按常理来说如果失败状态代码返回500确实更加合理一些,我之前这么做主要想的是为了简单一些,这样的话前端代码就不需要判断后端返回的内容是否错误,只需要把后端返回JSON当中的key对应的值赋值到页面弹出的modal框中即可。

即如果正确生成了,则弹出的model框会显示对应的短链接,如果生成错误,则显示对应的错误信息,相当于这样设计的话,就复用了同样的一段代码去应对两种情况。简而言之,就是我偷了点懒,当然这样弄就不太规范了。

个人感觉你的方式会更加的合理和规范,也更符合直觉便于理解,如果需要你可以再提交一个pull request,将关于API接口的规范化修改提交到main分支中