1

CodeIgniter는 "요청한 동작이 허용되지 않습니다."라는 오류 메시지를 표시합니다. CSRF에 대한 확인에 실패하면. 내가 알기에, 이것은 POST가 공격이 끝나지 않았다는 것을 증명하는 숨겨진 토큰이 폼에서 누락되었다는 것을 의미합니다.녹아웃 postJson 함수 호출로 "요청한 동작이 허용되지 않습니다"오류가 발생하는 것을 피하는 방법

토큰은 CI form_open 함수를 호출하면 자동으로 생성됩니다. 내 경우

, 나는 다음과 같이 저장하기위한 뷰 모델의 내용을 게시하는 넉 아웃을 사용하고 있습니다 :

ko.utils.postJson($("form")[0], self.pages); 

내가 찾은 솔루션을 다른 곳에서 단순히 특정 페이지에 대한 설정 CSRF를 해제하는 , 그러나 그것은 좋은 해결책처럼 보이지 않습니다.

아마도 토큰을받지 못하기 때문에 postJson 호출은 기존 양식을 제출하지 않습니다. 필요한 토큰을 JSON 데이터와 함께 제출하거나 기존 양식과 함께 JSON 데이터를 제출하는 방법이 있습니까?

+0

일반적으로이 경고 메시지는 컨트롤러에 POST 동작이 정의되어 있지 않은 상태에서 POST HTTP 동사가있는 컨트롤러에 액세스하려고한다는 것을 나타냅니다. 이것 좀 봐 줄래? 또한 CSRF의 설정이 문제를 해결했음을 확인 했습니까? – thomaux

+0

@Anzeo, 나는 CSRF를 끄면 문제가 해결되고, $ _POST의 값이 괜찮은지 확인할 수 있습니다. 컨트롤러에 "POST 동작이 정의되지 않았습니다"라는 의미가 무엇인지 잘 모르겠습니다. 그것이 $ _POST가 설정되어 있는지 확인하기위한 테스트가 있습니다. –

+0

ko.utils.stringifyJson (self.pages) 결과를 포함하도록 양식 필드를 설정하여이 문제를 해결할 수 있음을 발견했습니다. 하지만 그 작업을하기 위해 json2.js를 참조해야했습니다. 그것은 우아하지 않고, 나는 그것을하는 더 좋은 방법을 알고 있었으면 좋겠다. –

답변

1

도움이됩니다 form_open()form_close

모든 양식 도우미 기능을 사용하려고합니다.

또는 : 나는 시간대 차이가 있기 때문에 Security 클래스는 해시 시간에 따라 다릅니다.