안녕하세요.

POST 방식으로 요청 시 rewrite 설정 관련하여 질문드립니다.

특정 모듈에 rewrite 설정하여 module=mymodule&act=procMyModuleTest 요청을 

/mymodule?act=procMyModuleTest 와 같이 요청해도 처리 되도록 하려 합니다.

 

# mymodule page
rewrite ^/mymodule/?$ /index.php?module=mymodule last;

 

nginx.conf 설정을 위와 같이 하여 GET 방식으로 요청시는 정상동작하나..

GET /mymodule?act=procMyModuleTest

 

POST 방식으로 요청시는 정상동작을 안하는 것 같네요.

POST /mymodule HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

 

Http Body

act=procMyModuleTest

 

access.log 를 보면 Http Status 가 403 입니다.

 

127.0.0.1 - - [16/Sep/2017:00:03:41 +0900] "POST /mymodule HTTP/1.1" 403 1996 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
 

 

POST 방식으로 요청시에도 정상동작 하도록 처리하는 방법이 있을까요?

 

 

  • profile

    XE와 라이믹스에서 모든 POST 요청은 "/" 주소로 하고, module이나 act는 HTTP body에 넣는 것이 정석입니다. 그 밖의 방식은 어떤 것도 정식으로 지원하지 않습니다. 주소에 ?를 달고 변수를 덧붙인다는 것 자체가 GET 방식을 전제로 하는 거니까요.

     

    예전에 XE에서 도입하려다가 어떤 이유에서인지 포기한 라우터(router) 기능이 라이믹스에 도입된다면 좀더 유연하게 주소를 처리할 수 있게 되겠지만, 지금은 안 됩니다.

     

    아, 그리고 XE 특성상 procMyModuleTest 같은 act 이름도 안 먹힐 가능성이 높습니다. act에 포함된 모듈 이름은 첫 글자만 대문자여야 하거든요. procMymoduleTest로 하시면 module=mymodule을 넣지 않더라도 알아서 모듈을 찾아갈 수도 있습니다.

  • profile profile
    네.. 그렇군요. 도움이 많이 됐습니다~
    친절한 답변 감사합니다. 편한 밤 되세요^^