今天,G-WAN继续进行这样的请求(使用loan.java servlet作为样本):
localhost/?loan.java&name=Eva&amount=100000&term=5&rate=4.2
特定的处理程序(或什至更好的G-WAN交换机)能否进行这样的请求:
localhost/loan.java?name=Eva&amount=100000&term=5&rate=4.2
哪里:
a)在servlet名称的名称之前,但在第一个参数之前,没有“?”字符,并且,
b)“和”字符不是放在第一个参数之前,而是放在第二个,然后是第三个,第四个(等等)参数之前。
这样的处理程序(甚至更好的G-WAN交换机)将使G-WAN与用于创建Web应用程序和网站的成千上万的代码(Go,Java,Mono,NodeJS,PHP,Ruby等)兼容。开发人员必须重写才能与G-WAN一起使用,并受益于其高性能,可扩展性和安全性。
注意:先前的答案从未回答过另一个竞争者的问题:“如何删除” ? “character”和init.c代码没有提供删除QUERY_CHAR的方法,但是:
a)仅从字符集中选择:-_。 ! 〜*'()和,
b)不要放置“?”以及上面所需的正确位置的“&”字符。
因此,我希望我的问题更加清楚。
而且,如果需要资金,要让G-WAN开发人员获得与标准G-WAN版本一样的处理程序(甚至更好的G-WAN交换机)以像其他所有Web服务器一样处理请求,要付出多少代价?即使使用正则表达式代码也会使G-WAN变慢一点(如果有)?
预先感谢您为这种异常Web应用程序服务器实现这种所需增强的方法。
最佳答案
G-WAN website上有一个Connection Handler
的示例。您可以在G-WAN处理请求之前/期间/之后随意重写请求。
在网站示例中,将第6行替换为:
char *p = strstr(read_xbuf->ptr, ".java?");
if(p)
{
char *b = p; while(*b != '/') b--; // find script name
memmove(b + 1, b, p + sizeof(".java?") - (b + 2)); // make room
b[1] = '?'; // add leading '?'
}
这将执行您想要的reqrite。如果您对该代码有疑问,请在gwan.ch上给我们一行。
请将符合您需求的答案标记为“已接受”。
关于java - 是否可以(以及如何)更改G-WAN处理请求的方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36022913/