2011-10-27 2 views
21

방금 ​​SSL을 내 사이트에 추가했습니다. https://mydomain.com에 가면 텍스트가 표시되지만 CSS 나 이미지는 없습니다. 전용 서버에 있으며 코드를 완전히 제어 할 수 있습니다.HTTPS에서 이미지와 CSS가 표시되지 않는 이유는 무엇입니까?

현재 모든 경로는 상대 경로입니다. HTTP 나 HTTPS를 사용하든 관계없이 파일을 직접 볼 때 이미지와 CSS를 볼 수 있습니다. 하지만로드 할 페이지를로드 할 때 ...

Firebug를 사용하고 NET에서 볼 때 각 이미지에 대해 302 찾을 수 있습니다. 그게 무슨 뜻 이죠?

http 및 https 사이트가 비슷하게 표시되도록하려면 어떻게 변경해야합니까?

모든 경로를 절대적으로 설정합니까? 모든 것에 영향을 미치기 위해 하나의 변화를 만드는 방법이 있습니까? 아니면 실제로 모든 것을 바꾸어야합니까?

감사합니다.

답변

10

핫 링크 보호 기능이 있습니까? 비활성화하려는 경우. 도움이되는지 확인하십시오.

+0

RewriteCond % {HTTP_REFERER}^http : // (www \.)? XXX.com – user2992220

+4

핫 링크 보호 란 무엇입니까? –

2

모든 것을 절대 만들 필요는 없지만 SSL을 통해 CSS 및 이미지에 액세스 할 수 있어야합니다. 직접 액세스하거나 Firebug 또는 유사한 브라우저 도구를 사용하여로드하려는 위치를 파악하십시오. '프로토콜 기준 URL'을 사용하여 CSS, 이미지 등이 항상 페이지 자체와 동일한 프로토콜 (http 또는 https)을 사용하여 액세스되도록하는 것이 좋습니다. http://paulirish.com/2010/the-protocol-relative-url/

+0

HTTP와 HTTPS 모두에서 내 이미지와 CSS를 볼 수 있지만 분명히로드되지 않습니다. 또한 내 HTTPS 페이지로 이동하여 FF로 소스를보고 CSS 링크를 클릭하면 HTTP로 연결됩니다 ...하지만 링크를 클릭하면 HTTPS 페이지에서 다른 페이지가 HTTPS로로드됩니다. 나는 약간 혼란 스럽다. – santa

1

나는 동일한 문제가있었습니다. 페이지가 https로 열리면 https에도 css/js가로드되어야합니다. 이 말은 css/js를로드하기 위해 html/jsp/jsf 기타 페이지를 여는 데 사용되는 프로토콜과 동일한 프로토콜을 사용해야 함을 의미합니다. 그래서 해결책은 css/js에 절대 URL을 사용하지 않는 것입니다.

<link type="text/css" rel="stylesheet" href="../css/style.css" /> 

또는 이것을 사용 : 대신 같은 상대 URL을 사용

<% String contextPath=request.getScheme()+"://"+request.getServerName()"+":"+request.getServerPort()+request.getContextPath(); 

<link type="text/css" rel="stylesheet" href="<%=contextPath>/css/style.css" />

이 이미지 로딩 문제를 해결해야한다.

+0

"/css/myfile.css"와 같이 절대적이지만 동일한 프로토콜을 나타 내기 위해 이중 슬래시를 사용할 수 있습니다. – nickdnk

2

절대 링크 (예 : http://www.yourcompany.net/yourcompany.css)로 CSS를 가리키는 경우 https에 CSS가 표시되지 않습니다. 이 값을 https://www.yourcompany.net/yourcompany.css으로 설정하면 두 호출에서 모두 작동합니다.

관련 문제