是否有可能(以及如何)改变G-WAN处理请求的方式?
今天,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与用于创build今天的web应用和网站的无数代码(Go,Java,Mono,NodeJS,PHP,Ruby等)兼容开发人员有义务将其重写为简单地与G-WAN一起使用,并有利于其高性能,可扩展性和安全性。
注意:以前的答案永远不会回答另一个contibutor的问题:“如何删除” ? “字符”和init.c代码不提供删除QUERY_CHAR的方法,但是:
a)只能从字符集中select: – _。 ! 〜*'()和,
b)不要放置“?” 以及上面需要的“&”字符。
所以,我希望我的问题更清楚。
如果需要资金,G-WAN开发者可以用标准的G-WAN版本获得这样一个处理程序( 甚至更好的G-WAN交换机 ),以像所有其他Web服务器一样处理请求那么,即使使用正则expression式代码会使G-WAN变慢一点( 如果有的话 )呢?
预先感谢您为这个exception的Web应用程序服务器实现这样一个必要的增强的方法。
在G-WAN 网站上有一个Connection Handler
的例子。 在G-WAN处理之前/之后,您可以根据需要重写请求。
在网站示例中,将行#6replace为:
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上给我们留言。
请标记为“已接受”符合您需求的答案。