附加查询字符串时总是跳过尾部斜杠是否安全?
也就是说,我可以使用
http://example.com?querystring
Run Code Online (Sandbox Code Playgroud)
代替:
http://example.com/?querystring
Run Code Online (Sandbox Code Playgroud)
?我使用的所有webhost都支持这个,但是可以安全地假设所有服务器环境都支持这种方法吗?这是标准的吗?
鉴于此功能:
function doThing(values,things){
var thatRegex = /^http:\/\//i; // is this created once or on every execution?
if (values.match(thatRegex)) return values;
return things;
}
Run Code Online (Sandbox Code Playgroud)
JavaScript引擎多久创建一次正则表达式?每次执行一次或每页加载/脚本解析一次?
为了防止不必要的答案或评论,我个人赞成将正则表达式放在函数之外,而不是在函数内部.问题是关于语言的行为,因为我不知道在哪里查看,或者这是引擎问题.
我被提醒我没有提到这将在循环中使用.我很抱歉:
var newList = [];
foreach(item1 in ListOfItems1){
foreach(item2 in ListOfItems2){
newList.push(doThing(item1, item2));
}
}
Run Code Online (Sandbox Code Playgroud)
因此,假设它将在循环中多次使用,那么在函数外部定义正则表达式是有意义的,但这就是理念.
另请注意,脚本相当通用化,目的只是检查正则表达式创建的行为和成本
是否可以使用node.js重写URL路径?(我也使用Express 3.0)
我尝试过这样的事情:
req.url = 'foo';
Run Code Online (Sandbox Code Playgroud)
但网址继续相同
我有一个javascript根据URL做不同的事情.为了工作,我需要有一致的URI.
例如,我需要用户始终打开www.site.com/users/bob/而不是www.site.com/users/bob
不幸的是,节点似乎不支持它.
我尝试重定向
router.get('/:user', function(req, res) {
res.redirect('/users/' + req.params.user' + '/');
});
Run Code Online (Sandbox Code Playgroud)
但它只会导致重定向循环,因为带有和不带斜杠的URL似乎都被视为相同.
我怎样才能做到这一点?谢谢!
我想从WITHOUT斜线路由到斜线.另一个问题的答案解决了另一种方式.我不能.substr(-1)我的网址
我尝试了几种提供静态目录的方法。这是我这样做的一种简单方法。
var app = express();
app.all('*', express.static('./public'));
module.exports = app;
// run the server
http.createServer(app).listen(8080);
Run Code Online (Sandbox Code Playgroud)
我还有其他几种配置,例如:
app.use('/', express.static('./public'));
Run Code Online (Sandbox Code Playgroud)
公共目录中有一个 index.html 文件可以很好地提供。HTML 文件中唯一的内容是对 JavaScript 文件的请求。当该请求被发出时,express 会抛出一个 301 重定向,并添加一个尾部斜杠。
这是 HTML:
<script type="text/javascript" src="/dist/bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
这是网络请求。
任何帮助表示赞赏。