[go, echo] form에서 put ~ method Over Ride 요청 ~
<form>
<input type="hidden" name="_method" value="PATCH">
</form>
만약 쓰면 php 방면에서 할 수 있습니다. 처리하면 패치 방법은 도망갈 수 있습니다.그러나 고에 똑같이 써도 움직이지 않고 위와 같은 구조를 스스로 만들어야 한다.
그렇다면 어떻게 해야 할지 루트의 프로세스가 달리기 전에 처리해야 할middleware를 준비해야 합니다.다음은 golang의 echo를 사용하지만 프레임워크를 사용하지 않아도 거의 같습니다.
우선, main 함수에서 아래와 같이 MethodOverride를 읽습니다.
e.Pre(controllers.MethodOverride)
이렇게 하면 라우터가 달리기 전에 먼저 이동할 수 있다.나는 처음에는 e.Use에서도 움직일 줄 알았는데 움직이지 않고 쌓였다.공식적으로도 method Over Ride에 e.Pre를 사용한다고 쓰여 있다.문서 레지스트리에 항목을 추가합니다.
func MethodOverride(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
if c.Request().Method == "POST" {
method := c.Request().PostFormValue("_method")
if method == "PUT" || method == "PATCH" || method == "DELETE" {
c.Request().Method = method
}
}
fmt.Println(c.Request())
return next(c)
}
}
즉, 포스트 방법이 이동할 때if 이하를 처리한다.method에 자신이 사용하고 싶은 httpmethod(put,delete,patch 등)를 입력하고request의method를 다시 씁니다.그런 다음 다음 다음 함수를 입력하여 호출합니다.adminGroup.PATCH("/update", controllers.UpdateAdminUser)
여기서 마치겠습니다.이 글에는 표준 포장만 사용하는 같은 방법이 쓰여 있다.
https://www.alexedwards.net/blog/http-method-spoofing
Reference
이 문제에 관하여([go, echo] form에서 put ~ method Over Ride 요청 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shoking/items/4e26b5438c3437400f53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)