2010-11-25 3 views
1

GET:'getPendingList'을 보내는 AJAX 요청이 있습니다. 이 요청은 승인이 필요한 보류중인 요청 목록을 나타내는 JSON 문자열을 반환해야합니다. 나는 GET 또는 POST를 사용해야하는지에 대해 다소 혼란스러워합니다. this website에서AJAX 요청을 생성하는 맥락에서 GET과 POST의 차이점은 무엇입니까?

은 :

  • GET 요청은 캐시 할 수
  • GET 요청
  • GET 요청을 북마크 할 수있는 브라우저 기록에 남아있을 수
  • GET 요청은 &는
  • 을 공유 배포 할 수 있습니다 GET 요청을 해킹 할 수 있습니다 (Jakob에게 문의하십시오).

그래서 생각 중입니다. 보류중인 목록이 변경 될 수 있기 때문에이 GET 결과를 캐싱하지 않기를 바랍니다. 반면에 POST를 사용하는 것은별로 의미가없는 것처럼 보입니다.

GET 및 POST에 대해 어떻게 생각합니까? GET은 '읽기'와 동일하다고 들었습니다. 서버 측에서 어떤 것도 변경하지 않아야합니다. 이것은 의미가 있습니다. 캐싱 부분은 의미가 없습니다. 데이터 변경이 예상되기 때문에 다른 사람이 내 GET 요청을 캐시하면 내게 적합하지 않습니다.

답변

0

그래서 일부 IRC'ing 후,이를 수행하는 가장 좋은 방법은 GET (이 특별한 경우)을 사용하는 것이지만 캐싱을 방지하는 것입니다. 이 작업을 수행하는 방법은 두 가지가 있습니다.

1) GET 요청에 임의의 문자열을 추가하십시오.

이것은 해킹하는 방법처럼 보이지만 IE를위한 유일한 해결책 인 것 같습니다. Prevent browser caching of jQuery AJAX call result.

2) 서버의 응답에서 헤더를 no-cache로 설정하십시오.

결정적인 동작이 무엇인지는 명확하지 않습니다. 일부 사람들은 IE가 no-cache 지시어를 존중하지 않는다고 주장한다. 다른 사람들은 이것이 작동한다고 생각하는 것 같습니다 : Internet Explorer 7 Ajax links only load once.

0

간단히 말해 GET 요청은 idempodent이어야합니다. POST 요청은 그렇지 않습니다.

상태를 변경하는 경우 POST을 사용하십시오. 그렇지 않은 경우 GET을 사용하십시오.

GET/POST로 캐싱에 대해 이야기 할 때는 브라우저 캐싱입니다.

데이터 서버 쪽 캐싱을 중지시키는 것은 없습니다. 또한

는 일반적으로 - JSON은 POST ( here's why)

+0

글쎄, 나는 GET 요청을 캐싱하지 않을 것이다. 예 : 리소스, a.jpg가 있다고 가정 해보십시오. 나는 이것에 GET을한다. 그런 다음 서버의 내용을 변경합니다. 브라우저가 a.jpg를 캐시하면 클라이언트는 부실 데이터를 갖습니다. 불행히도 POST가 여기있는 것이 가장 좋습니다. 여기에서 첫 번째 답변을 참조하십시오 : http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get – Avery

+0

@Avry - 네, querystring 매개 변수를 추가하여 해결할 수 있습니다. 파일 (CSS 파일로 알려진 트릭). – RPM1984

1

야후의 best practices이 이상 읽을 가치가있을 수도 있어야한다 호출합니다. 그들은 주로 정보를 검색하고 POST를 사용하여 정보를 업데이트하는 데 GET을 사용하는 것이 좋습니다. 별도의 항목에서 그들은 또한 do을 사용하면 Ajax 요청을 의미가있는 곳에 캐시 할 것을 권장합니다. 그것을 확인하십시오, 좋은 읽을 거리 야.

관련 문제