2017-09-04 6 views
-2

헤더 필드를 기반으로 요청을 인증 한 다음 HTML 페이지를 반환하는 API가 있습니다.도메인 변경을 초래해야하는 HTTP 요청에 헤더 필드 포함

이 API에 대한 요청은 도메인 (그냥 하이퍼 텍스트를 클릭하는 것과 같은) domain1.comdomain2.com로 변경됩니다 같은 것을 방법으로 만들 수있다.

헤더 필드를 추가해야하므로 <a>Link</a>을 사용할 수 없습니다. 은 컨트롤을 domain1.com에서 domain2.com으로 변경하지 않으므로 사용할 수 없습니다. 가능하면 2 개 요청과 이상 -이 같은

뭔가

$.ajax({ 
// Use ajax to authenticate 
... 
success : function(path){ 

    // Load the path for domain change 
    location.assign(path);  
    // Even this request should have a header field 
}, 
...  
}) 

내가 단일 요청으로 (도메인 및 헤더 사용 변경) 모두의 기능을 필요로 ... 전혀 이해가되지 않았다 .

아이디어가 있으십니까?

+0

"도메인이 바뀔 것"이란 무엇을 의미합니까? 그 진술은 말이되지 않습니다. 어디에서 바꿀까요? 리디렉션을 찾고 있습니까? 이것이 AJAX와 어떤 관계가 있을까요? – Brad

+0

'302 리디렉션 '을 찾으십니까? – shaochuancs

+0

@Brad ' somewebsite.com'을 클릭하면 somewebsite.com으로'URL '이 변경됩니다. 이것은 도메인 변경으로 인한 것입니다. 헤더 필드를 설정하려면 아약스가 필요합니다. –

답변

0

헤더에 자격증 명으로 HTTP 요청을 보내고 성공하면 "도메인 변경"하기 위해 302 코드와 Location JSON 응답을 사용할 수 있습니다. 브라우저 동작은 트리거되지 않습니다.

예 응답 :

$.ajax({ 
    // Use ajax to authenticate, with credential in HTTP header 
    ... 
    success: function(result){ 
    if (result.status === 302) { 
     window.location = result.location; 
    } 
    }, 
    ...  
}) 

2 HTTP 요청이 사용됩니다

HTTP response code: 200 OK 

HTTP response body: 
{ 
    status: 302, 
    location: 'domain2.com/result' 
} 

아약스 코드는 같을 것이다. 하나는 Ajax 용이고 다른 하나는 리디렉션 용입니다.

+0

여기로 리디렉션해도 창 URL은 변경되지 않습니다. 리디렉션 된 URL에서만 내 요청을 처리합니다. 따라서 리디렉션 된 URL에서 HTML을 가져 와서 내 페이지에 삽입 할 수 있습니다. 하지만 리디렉션 된 페이지로 이동하고 싶습니다. 어떻게해야합니까? 헤더없이 일반 location.assign()을 사용하여 수행 할 수 없습니다. –

+0

@samkirubaharan 실수로 죄송합니다. 다른 시나리오와 혼동 스럽다. 답변이 업데이트되었습니다. 확인해주십시오. – shaochuancs

+0

어디서 이런 식으로 처리 할 수 ​​있습니까? 나를 위해 브라우저가 자동으로 리디렉션됩니다. 리디렉션 된 통화에 대한 응답 만 처리 할 수 ​​있으며 초기 통화는 처리 할 수 ​​없습니다. –