2011-12-31 7 views
25

AJAX 요청과 직접 브라우저 요청 (웹 페이지가 호출되고로드되는 측면에서)간에 차이가 있습니까?AJAX 요청과 일반 브라우저 요청의 차이점

다른 말로하면 브라우저 쪽에서 요청한 클라이언트 쪽 요청과 다른 방식으로 처리되는 직접적인 서버 쪽 요청입니까?

답변

18

Ajax 요청이 늘어나는만큼 "정상적인"브라우저 요청에 동일입니다 서버는 잠재적으로 약간 다른 HTTP 헤더 이외에 관련되어 있습니다. 예 : 크롬 보냅니다

X-Requested-With:XMLHttpRequest 

내가 그 헤더가 표준화되지 않거나 있는지 확실하지 않습니다, 또는 모든 브라우저에서 또는 다른 있다면 모든 브라우저에서 모든에서 포함되어 있습니다.


편집 : 전송

var xhr = new XMLHttpRequest(); 
xhr.open('GET', '/'); 
xhr.send(); 

:에 의해 입증 된 바와 같이 나는, 그 헤더, jQuery를 (그리고 가능성이 다른 JS 라이브러리)에 의해하지 브라우저를 보내 그 뒷면을

Accept:*/* 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Cookie: .... 
Host:stackoverflow.com 
If-Modified-Since:Sat, 31 Dec 2011 01:57:24 GMT 
Referer:http://stackoverflow.com/questions/8685750/how-does-an-ajax-request-differ-from-a-normal-browser-request/8685758 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11 

결론에 따라 기본적으로에는 차이가 없습니다.

-1

사용자 에이전트, 일명 브라우저는이 같은 PHP에서 잡을 수있는 XHR 헤더를 보냅니다

$_SERVER['HTTP_X_REQUESTED_WITH'] 
-1

아니요. 대부분의 Ajax 클라이언트는 X-Requested-With=XMLHttpRequest HTTP 헤더를 보낸다.

21

헤더 차이가있을 수 있지만 클라이언트의 주요 동작 차이는 클라이언트에있다.

브라우저가 window.location.href = "index.html"과 같이 정기적 인 요청을하면 현재 창을 지우고 창에 서버 응답을로드합니다.

ajax 요청을 사용하면 현재 창/문서는 영향을받지 않으며 자바 스크립트 코드는 요청 결과를 검사하여 결과에 원하는대로 수행 할 수 있습니다 (HTML을 페이지에 동적으로 삽입하고 JSON을 파싱하고 페이지를 사용합니다). 논리, 구문 분석 XML 등 ...).

서버가 다른 작업을 수행하지 않습니다. 클라이언트가 두 요청의 응답을 처리하는 방법입니다.

1

비록 내가 너희들을 믿을지라도, weblogic에는 전혀 이상한 것이있다. AJAX 호출을하는 ExtJS 프레임 워크를 사용하는 응용 프로그램을 작성 중이다. j_security_check의 일을하는 동안 그것에게 AJAX 방식을 할 때

, 난 항상 오류를 얻을 : 웹 로직는 말한다 :

unauthorized: var submitButton = new Ext.Button({ 
      text: 'Logon', 
      formBind: true, //only enabled once the form is valid 
      disabled: true, 
      handler: function() {     
       Ext.Ajax.request({ 
        url: "j_security_check", 
        params: { 
         j_username: dlg.getForm().findField('j_username').getValue(), 
         j_password: dlg.getForm().findField('j_password').getValue() 
        }, 
        method: "GET" 
       }); 
      } 
     }); 

이 실패합니다.

window.location.href = "j_security_check?j_username=" + dlg.getForm().findField('j_username').getValue() + "&j_password=" + dlg.getForm().findField('j_password').getValue(); 

의미가 있습니다 :

나는이 발행 할 때! 기묘한.

관련 문제