G-WAN-如何返回状态码:如果请求URL = 541+个字符,则返回200 OK?

时间:2019-04-14 18:00:50

标签: httprequest g-wan server-configuration

我正在使用G-WAN Web App。服务器v7.12.6。

如何返回有效的状态码:如果请求URL总共有541个以上的字符(包括25个参数),则返回200 OK吗?

ajaxGet(URL,方法),其中方法是GET或PUT(结果相同)

请求网址:

http://myWebsite.ca:xx/?createCompany.c&legalname=mycomp&dba=mycomp%20dba&www=www.myWebsite... 

createCompany.c

#pragma link "pq"
#include <stdlib.h>
#include <string.h>
#include "/usr/include/postgresql/libpq-fe.h"
#include "gwan.h"
//----------------------------------------------------------------------------

int main(int argc, char *argv[]) {

  u64 start = getus();
  PGconn *conn;
  PGresult *res;
  char DBrequestString [1000] = "";

  char *legal_name = 0, *dba = 0, *www = 0; //...+ 22 more

  xbuf_t *reply = get_reply(argv);

  get_arg("legalname=", &legal_name, argc, argv);
  get_arg("dba=", &dba, argc, argv);
  get_arg("www=", &www, argc, argv);
  //...+ 22 more

  char requestString[1000] = "SELECT create_company('%s','%s','%s', ... + 22 more);";
  sprintf(DBrequestString, requestString,legal_name, dba, www, ... + 22 more);

  conn = PQconnectdb("host=x port=x dbname=x user=x password=x");

  if (PQstatus(conn) != CONNECTION_OK){
    fprintf(stderr, "Connection to database failed: %s",PQerrorMessage(conn));
    PQfinish(conn);
    xbuf_cat(reply, "{\"message\":\"Connection to database failed !\"}");//message Json format
    return 200;
  }
  res = PQexec(conn, DBrequestString);

  printf(" --> %s\n",PQgetvalue(res, 0, 0));
  xbuf_cat(reply, PQgetvalue(res, 0, 0));//return one line Json format

  PQclear(res);
  PQfinish(conn);
  printf("TEMPS D'EXECUTION: %.2Fms\n\n",(getus() - start)/1000.0);
  return 200; //return OK
}

2 个答案:

答案 0 :(得分:0)

很好的问题-我现在无法访问源代码,但查看网站上的G-WAN API会让我认为READ_XBUFMAX_ENTITY_SIZE可能都有用。 / p>

通常,READ_XBUF用在G-WAN HANDLER中以增加(如果需要)连接缓冲区,而MAX_ENTITY_SIZE是一次性设置,可以随时更改(并且借助init.c脚本,甚至在服务器启动之前。

我认为,仅仅扩大MAX_ENTITY_SIZE的值(目的是防止恶意实体DoS攻击)就可以完成这项工作,因为G-WAN最有可能在网络上自动扩大READ_XBUF从客户端读取时按请求的基础。

答案 1 :(得分:0)

感谢您的快速回复。

我更新了脚本createCompany.c以提高限制(根据您的示例):

u32 *old_entity_size = (u32*)get_env(argv, MAX_ENTITY_SIZE);
u32  new_entity_size = 2 * 1024 * 1024; // 2 MiB    
*old_entity_size = new_entity_size; // raise the limit to 2 MiB

有可能MAX_ENTITY_SIZE仅用于POST请求吗?

提高MAX_ENTITY_SIZE限制是否也适用于GET / PUT请求?

实际上,我希望此限制在G-WAN的默认设置下保持初始设置,这对其他.c脚本很有用, 但是仅针对此特定脚本createCompany.c

来提高GET / PUT请求的限制

任何script.c示例如何提高READ_XBUF的限制?