Why images and CSS do not show under HTTPS?

2019-04-18 13:19发布

I just added an SSL to my site. When I go to https://mydomain.com I see the text but no CSS or images are there. It is on a dedicated server and I have a full control of the code.

All paths currently are relative. I can view images and css when I go to those files directly whether using HTTP or HTTPS. But when i load a page they are not loading...

When I use Firebug and look in NET, I see for each image 302 Found. What does that mean?

What changes do I need to make to make sure http and https display site similarly?

Do I make all paths absolute? Is there a way to make a single change to affect all or I actually have to go and change each and every one?

Thanks.

标签: ssl https
4条回答
干净又极端
2楼-- · 2019-04-18 13:28

Do you have hotlink protection? If you have try to disable it. And see if it helps.

查看更多
可以哭但决不认输i
3楼-- · 2019-04-18 13:35

If you are pointing at your CSS with an absolute link (like http://www.yourcompany.net/yourcompany.css) it will not show the CSS in https. If you make that absolute https://www.yourcompany.net/yourcompany.css, it will work in both calls.

查看更多
小情绪 Triste *
4楼-- · 2019-04-18 13:37

I had the same issue. If page is opened in https then css/js should also be loaded in https. By this I mean, to load css/js it should use the same protocol as it used for opening html/jsp/jsf etc page. So the solution is to not use absolute url for css/js. Use relative url instead like this :

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

OR use this :

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

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

This should solve image loading issue.

查看更多
聊天终结者
5楼-- · 2019-04-18 13:42

You don't need to make everything absolute, but you need to make sure that your CSS and images are accessible over SSL. Try accessing them directly, or use Firebug or a similar browser tool to figure out where it's trying to load them from. Consider using "Protocol-relative URLs" so that CSS, images, and such are always accessed using the same protocol (http or https) as the page itself. http://paulirish.com/2010/the-protocol-relative-url/

查看更多
登录 后发表回答