2014-10-28 1 views
1

나는 간단한 XPage가 있으며 역방향 프록시를 통해 액세스합니다. 이제 문제는 서버 측에서 올바른 URL을 얻는 것입니다.리버스 프록시를 사용하여 XPage에서 현재 URL 가져 오기

context.getUrl().toString() 

XSPContext xspContext = new ServletXSPContextFactory().getXSPContext(FacesContext.getCurrentInstance()); 
    XSPUrl xspUrl = xspContext.getUrl(); 
    return xspUrl.toString(); 

올바른 작동하지 않았다.

예를 들어

:

브라우저에서

URL은 https://myip/db.nsf

하지만 SSJS 기능뿐만 아니라 자바 기능 내가이 리버스 프록시없이하려고하면 단지 http://myip/db.nsf

, 모든 것이 잘 작동 반환 . 서버 측에서 location.href를 가져 오는 방법이 있습니까?

답변

0

다른 곳으로 링크를 보내지 않으려면 프로토콜 부분이 필요하지 않습니다. 동일한 브라우저를 사용하는 경우 // someserver/somepage는 현재 사용중인 프로토콜을 사용하여 다른 서버에 연결됩니다. 프록시가 아마 헤더를 설정했을 것입니다.

+0

원인 중 하나입니다. 그 죄송합니다. 나는 장님이었다.네, 상대 경로 만 사용해야하고 모든 것이 좋습니다. – Pudelduscher

0

수동으로 URL을 만들려면 다음 코드를 사용할 수 있습니다

var path = facesContext.getExternalContext().getRequest().getContextPath() 
var url = "https://" + path 

+0

문제는 항상 URL이 https에있는 것은 아닙니다. 그래서 그것을 수동으로 설정하는 것은 나를위한 해결책이 아닙니다. – Pudelduscher

+0

facesContext.getExternalContext(). getRequest(). getRequestURL()은 xsp 부분 내의 전체 url을 반환합니다. 마지막 슬래시의 오른쪽 부분 (슬래시 포함)을 잘랐다면 URL은 – poisonedYouth

+0

입니다. 사실이긴하지만 https와 도메인을 수동으로 추가해야합니다. 프로토콜과 도메인이 고정되지 않았습니다. 동적으로 bowser에서 가져와야합니다. – Pudelduscher

0

흠 ...이 관리 될 수있는 HTTPS 접두사와 NSF-파일의 경로를 반환합니다 설정 : 인터넷 사이트 문서를 사용하여 들어오는 패턴으로 전체 URL을 자동으로 계산하는 웹 사이트 규칙 (유형 = 대체)을 추가로 만들 수 있습니다. 사이트 문서 및 웹 사이트 규칙을 설정하는 방법에 대한 IBM Domino 관리 도움말을보십시오. 목표는 두 URL 모두 동일한 체계를 갖도록하여 XSP 계산이 올바른 값을 동적으로 생성하도록하는 것입니다.

+0

예,이 또한 관리상의 문제라고 생각합니다. 그러나 이것은 매우 크고 복잡한 환경이며 관리적인 변경없이 사용할 수있는 솔루션을 얻고 싶습니다. 브라우저에서 값을 가져올 수있는 방법이 없다는 것을 압니다. 클라이언트 측 -js에서 sessionScope 변수에 대한 onload를 구문 분석하지 않고 의미합니다. – Pudelduscher

0

내가 원하는 것은 $WSIS 헤더를 역방향 프록시에서 True으로 설정하는 것입니다. WebSphere connector headers과 비슷하게 Domino는 들어오는 프로토콜이 모든 상황에서 HTTPS라고 생각해야합니다. 이것은 또한 Domino가 IP마다 하나의 사이트 문서 만 사용하는 동작으로 되돌아가는 불행한 부작용을 가지고 있음을 유의하십시오. 이 버그를 피하기 위해 역방향 프록시를 이용하고 있다면 프록시에서 X-SSL 헤더를 찾는 것과 같은 다른 경로를 찾아야합니다.

관련 문제