2012-07-24 10 views
0

아약스를 통해 양식을 게시하려고합니다. 그것은 나에게 "405 Method Not Allowed"오류를줍니다. 동일한 HTML 파일은 HTML 폼의 액션 부분에 url을 넣고 버튼 클릭시 수동으로 제출하면 작동합니다 (csrf 문제가 아니라 ..?).아약스 게시가 작동하지 않습니다.

무엇이 문제 일 수 있습니까?

+3

코드를 게시 할 수 있습니까? – Yoeri

+0

웹 사이트는 양식에 CSRF 숨김 필드를 추가하여 CSRF 유효성 검사를 통과합니다. Ajax 요청을하면 숨겨진 필드가 없어서 실패합니다. 간단히 숨겨진 필드를 찾아 값을 가져 값 목록에 추가하여 게시물로 보냈습니다. – Gavin

+3

@Engineer - 동일한 출처 정책으로 인해 405 오류가 발생하지 않습니다. – Quentin

답변

1

아약스 요청에 대해 같은 방법을 사용하고 있는지 확인하십시오. 아마도 양식에 "POST"방법을 사용하고 아약스 요청에 대해 "GET"을 사용하고있을 것입니다.

CSRF는 403을 던져야하며, (POST, GET, PUT, DELETE, ...) 메소드가 허용되지 않으면 405 오류 메시지가 표시됩니다.

편집 : jQuery로 양식을 제출하십시오 :

// change the selector! 
var data = $("form").serialize(); 
alert(data); 

$.ajax({ 
type: "POST", 
url: "/your-backend.php", 
data: data, 

을});

이렇게 할 때 방화 단추가 뭐라고 말합니까?

+0

싫어, 내가 교차 확인, 그들은 동일합니다. Gavin이 숨겨진 필드를 말했듯이, 그것이 폼에 존재한다면 원인이됩니다. 숨겨진 필드를 가져 오는 방법? –

+0

내 대답을 편집했습니다 – Besnik

+0

경고 메서드를 사용하여 CSRF 토큰을 포함하는 필드를 찾을 수 없습니다. 동일한 오류가 "405 메소드가 허용되지 않음" –

관련 문제