【发布时间】:2021-10-12 13:46:48
【问题描述】:
我正在编写一个 Express 应用程序,它根据用户从两个下拉列表中所做的选择来创建和导出文档。按下按钮后,下拉值作为路由参数传递,然后在路由方法中调用必要的函数来创建文档并将其发送回用户。
如何通过在 URL 栏中手动输入路由参数来防止用户(如果可能)调用/访问此路由?他们应该只能通过按下按钮访问路线。
以下是我的应用程序功能的一些通用代码...
按钮点击后获取/发送值的代码:
export.onclick = function() {
let index1 = dropdown1.value;
let index2 = dropdown2.value;
fetch('/' + index1 + '/' + index2)
// Convert response to blob object for download
}
路线代码:
app.get('/:index1/:index2', function (req, res) {
// Call functions to create document
// Return document back to user
});
下拉列表是使用从 API 响应中获得的数据动态填充的。每个下拉选项的值代表该选项的索引。能够输入随机索引的用户允许无效输入;但是,输入不一定有边界,因为下拉列表是根据各种用户限制动态填充的。出于这个原因,通过在我的脑海中输入参数来防止用户能够访问路线是理想的。
【问题讨论】:
-
在浏览器的地址栏中输入 URL 通常会向您的应用程序创建一个
GET请求。因此,如果您将注册的GET处理程序更改为POST一个 ...并在您的 fetch 调用中使用 MethodPOST... 那么您应该很好。
标签: javascript node.js express