안녕하세요.
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 방식으로 요청시에도 정상동작 하도록 처리하는 방법이 있을까요?
XE와 라이믹스에서 모든 POST 요청은 "/" 주소로 하고, module이나 act는 HTTP body에 넣는 것이 정석입니다. 그 밖의 방식은 어떤 것도 정식으로 지원하지 않습니다. 주소에 ?를 달고 변수를 덧붙인다는 것 자체가 GET 방식을 전제로 하는 거니까요.
예전에 XE에서 도입하려다가 어떤 이유에서인지 포기한 라우터(router) 기능이 라이믹스에 도입된다면 좀더 유연하게 주소를 처리할 수 있게 되겠지만, 지금은 안 됩니다.
아, 그리고 XE 특성상 procMyModuleTest 같은 act 이름도 안 먹힐 가능성이 높습니다. act에 포함된 모듈 이름은 첫 글자만 대문자여야 하거든요. procMymoduleTest로 하시면 module=mymodule을 넣지 않더라도 알아서 모듈을 찾아갈 수도 있습니다.