场景:站点的全域名是:https://www.example.com,用户使用此链接访问站点时完全正常,但是有时候用户手动输入网址时并不会输入全域名,可能是:www.example.com,也可能是:example.com以及http://www.example.com
https://www.example.com //同一域名,不同的协议
http://www.example.com
http://static.example.com //主域相同,子域不同
http://www.example.com
http://example.com //同一域名不同二级域名
如果使用的是tomcat服务器,可以在web.xml中配置:
这段配置可以将所有http的请求自动转至https
其它的跨域解决方式是使用js判断URL:
这段js应该放置于页面的顶部,以加快页面的跳转,其可以避免example.com(链接中不加www)形式的url访问造成的ajax跨域问题:
这种情况下页面中若有ajax访问服务器便会出现跨域的错误,常见的输入域名引起跨域的情况有以下几种:
https://www.example.com //同一域名,不同的协议
http://www.example.com
http://static.example.com //主域相同,子域不同
http://www.example.com
http://example.com //同一域名不同二级域名
如果使用的是tomcat服务器,可以在web.xml中配置:
- <security-constraint>
- <web-resource-collection >
- <web-resource-name >SSL</web-resource-name>
- <url-pattern>/*</url-pattern>
- </web-resource-collection>
- <user-data-constraint>
- <transport-guarantee>CONFIDENTIAL</transport-guarantee>
- </user-data-constraint>
- </security-constraint>
这段配置可以将所有http的请求自动转至https
其它的跨域解决方式是使用js判断URL:
- var locationUrl = location.href;
- if(locationUrl.indexOf('www.example.com')==-1){
- if(locationUrl.indexOf('example.com')!=-1){
- locationUrl = locationUrl.replace('example.com','www.example.com');
- location.href= locationUrl;
- }
- }
这段js应该放置于页面的顶部,以加快页面的跳转,其可以避免example.com(链接中不加www)形式的url访问造成的ajax跨域问题: