Вопрос связан с: когда я обновляю страницу, а не загружается страница. Angularjs + Nodejs
Но в этом случае я отключу html5mode и, следовательно, URL-адрес появится символ #. Я хочу иметь контроль доступа к определенным разделам кода, которые я покажу ниже, но не знаю, как обращаться С#
app.get(['/homepage', '/recoveryPassword', '/manageAccount', '/shop/:itemId/cat/:categoryId', '/shop/:shopName', '/manageMyShops', '/manageMyShops/id/:shopId', '/manageWeb'], isLoggedIn, function (req, res) {
res.end();
});
Я не хочу публиковать это, потому что я думаю, что это НЕ является реальным решением проблемы ОП. Для меня это взлом, поэтому используйте его на свой страх и риск.
Начнем с того, что для URL REST нетрадиционных символов, таких как "#". Хотя я считаю, что нет стандартного способа именования конечных точек, но рекомендуется следить за тем, чтобы URL-адреса соответствовали этим правилам;
Во всяком случае, мой подход.
По серверному коду;
/config#
замените символ "#" на нечто уникальное, например, _bbb
вы судите, просто убедитесь, что он не сталкивается с другими конечными точками.Код клиента:
Пример:
Клиент:
"use strict";
let request = require("request");
let req = {
url: 'localhost:4444/${encodeURIComponent('config#')}',
proxy: 'http://localhost:4444',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
request(req, function (err, res, body) {
this.config = JSON.parse(body);
console.log("response => " + this.config);
});
Сервер:
"use strict";
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
var config = require('config');
app.use(bodyParser.json());
app.use((req, res, next) => {
let decoded_url = decodeURIComponent(req.url);
req.url = decoded_url.replace('#', '_bbb');
next();
});
app.get('/config_bbb', function(req, res){
res.json('{name: test}');
});
// Start the server
app.set('port', 4444);
app.listen(app.get('port'), "0.0.0.0", function() {
console.log('started');
});
Вывод:
response => {name: test}
Идея здесь. Когда клиент вызывает конечную точку, да, URL-адрес по-прежнему находится в /config#
но вы кодируете его так, чтобы он выглядел как /config%23
.
Видеть:
http://www.w3schools.com/tags/ref_urlencode.asp
Затем, когда запрос поступает на сервер, добавленный вами слой в expressJS расшифровывает URL-адрес из /config%23
в /config#
и вы заменяете #
char чем-то уникальным. Пусть say _bbb
, так что конечный URL-адрес /config_bbb
который направляется к фактической конечной точке.
К сожалению, express не любит, чтобы конечные точки имели в них специальные символы, если вы не заменяете #
чтобы быть чем-то узнаваемым, тогда вы обнаружите, что он не будет правильно маршрутизироваться, даже если ваш URL совпадает.
#xxxxx
) не отправляется на сервер, он используется только браузером. Ничего общего с угловым .... как работают хэшиlayer
к промежуточному программному обеспечению expressJS, чтобы преобразовать «#» во что-то, уникальное слово или что. Затем зарегистрируйте свою конечную точку соответственно. Если вы не возражаете против альтернативы, я могу поддержать мою идею как ответ для вас.