1: GET 액세스 브라우저는 이를 멱등성으로 간주합니다.
은 결과가 하나뿐인 동일한 URL입니다. [동일하다는 것은 전체 URL 문자열이 정확히 일치함을 의미]
따라서 두 번째 방문 시 URL 문자열이 변경되지 않으면 브라우저는 첫 번째 방문 결과를 직접 가져옵니다
POST는 액세스 변경으로 간주됩니다(브라우저에서는 POST 제출을 변경해야 한다고 생각함)
GET의 멱등성 액세스를 방지하려면 URL? 뒤에 추가하면 됩니다. new Date();, [간단히 말하면 방문할 때마다 URL 문자열이 달라집니다]
웹 페이지를 디자인할 때도 이 원칙을 따라야 합니다
2:1. Ajax Get과 Post의 차이점에 대해 이야기해 보세요
Get 방식 :
get 방식을 사용하면 간단한 데이터 전송도 가능하지만, 일반적으로 크기가 1KB로 제한되며, URL에 데이터를 붙여서 전송한다(HTTP 헤더 전송). 즉, 브라우저는 각 양식 필드 요소와 해당 데이터를 URL 매개변수 형식으로 요청 라인의 리소스 경로에 추가합니다. 가장 중요한 것은 클라이언트의 브라우저에 캐시되어 다른 사람들이 브라우저 기록에서 계좌 번호, 비밀번호 등과 같은 고객의 데이터를 읽을 수 있다는 것입니다. 따라서 어떤 경우에는 get 메소드가 심각한 보안 문제를 일으킬 수 있습니다.
Post 방법:
POST 방법을 사용할 때 브라우저는 각 양식 필드 요소와 해당 데이터를 HTTP 메시지의 매개변수가 아닌 HTTP 메시지의 엔터티 콘텐츠로 웹 서버에 보냅니다. URL 주소 전송, POST 방식을 사용하여 전송되는 데이터의 양은 GET 방식을 사용하는 것보다 훨씬 큽니다.
간단히 말하면 GET 방식은 적은 양의 데이터를 전송하고 처리 효율성이 높으며 보안성이 낮고 캐시되지만 POST의 경우 그 반대입니다.
get 메소드를 사용할 때 다음 사항에 유의하세요.
1 get 요청(또는 관련 URL 전달 매개변수)의 경우 전달된 매개변수는 먼저 encodeURIComponent 메소드로 처리되어야 합니다. 예: var url. = "update.php?username=" encodeURIComponent(사용자 이름) "&content=" encodeURIComponent
(콘텐츠) "&id=1" ;
Post 메소드 사용 시 주의 사항:
1. 헤더의 Context-Type을 application/x-www-form-urlencode로 설정합니다. 서버가 엔터티를 알고 있다는 매개 변수 변수가 있습니다. 일반적으로 XmlHttpRequest 개체의 SetRequestHeader("Context-Type","application/x-www-form-urlencoded;")가 사용됩니다. 예:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
2. 매개변수는 일대일 이름/값 대응을 갖는 키-값 쌍입니다. 각 값 쌍은 앰퍼샌드를 사용합니다. 예를 들어 var name=abc&sex=man&age=18인 경우 var name=update.php?
abc&sex=man&age=18 및 var name=?abc&sex=man&age=18이 모두 잘못되었습니다.
3. 매개변수는 Send(매개변수) 메소드로 전송됩니다. 예: xmlHttp.send(name); get 메소드는 직접 xmlHttp.send(null);
4. 서버측 요청 매개변수는 Get과 Post를 구별합니다. get 메소드인 경우 $username = $_GET["username"]; post 메소드인 경우 $username = $_POST["username"];
AJAX 왜곡 문제
잘못된 코드의 원인:
1. xtmlhttp에서 반환된 데이터의 기본 문자 인코딩은 utf-8입니다. 클라이언트 페이지가 gb2312 또는 기타 인코딩된 데이터인 경우 잘못된 코드가 생성됩니다.
2, post 메소드로 제출된 데이터의 기본 문자 인코딩은 utf-8입니다. 서버 측이 gb2312 또는 기타 인코딩된 데이터인 경우 잘못된 문자가 생성됩니다.
해결 방법은 다음과 같습니다.
1. 클라이언트가 gb2312 인코딩을 사용하는 경우 서버에서 출력 스트림 인코딩을 지정합니다.
2. 클라이언트 utf-8 인코딩
gb2312:header('Content-Type:text/html;charset=GB2312');
utf8:header('Content-Type:text/html;charset=utf-8');
참고: 위 방법을 수행했지만 여전히 잘못된 문자를 반환하는 경우 요청 가져오기(또는 URL 전송과 관련된 매개변수)에 대해 해당 방법이 get인지 확인하세요. 전달된 매개변수는 먼저 encodeURIComponent 메소드로 처리되어야 합니다. encodeURIComponent로 처리되지 않으면 잘못된 문자도 생성됩니다.