场景:站点的全域名是: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跨域问题: