iOSwebview加载网页http链接被转到https的问题

问题现象

  1. webview访问http的链接被自动转到了https开发的域名中,导致页面访问失败。通过抓包工具发现该页面并未请求http开发的资源而是由iOS的webview自动转到了https开头的域名中。
  2. 一经出现该问题,后续所有的http开头的相同域名下的网页都无法正常访问,需卸载重装后正常。

问题原因

  1. 该域名下存在http和https两种访问方式,如webview访问了https开头的访问链接成功后会自动保存Strict-Transport-Security
    状态到浏览器缓存中,导致了后续访问http会被自动转到https。

解决方案

  1. 在请求时候添加如下参数
    设置 Strict-Transport-Security 为 max-age=0

发送请求时候可以这样改

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:<yourURL>]];
[request setValue:@"max-age=0" forHTTPHeaderField:@"Strict-Transport-Security"];

也可以让服务端在nginx端的配置找到如下类似配置,将mac-age修改为0, 也就是缓存时间未0后每次再访问http就不会被自动重定向到https了。
注意修改完毕后要先访问原https的域名一次刷新下缓存时间才能生效。

$ vim /etc/nginx/conf.d/hi-linux.conf
 
server {
   listen 443 ssl;
   server_name www.hi-linux.com;
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...
}
 
server {
   listen 80;
   server_name www.hi-linux.com;
   return 301 https://www.hi-linux.com$request_uri;
...
}
  1. 参照该博文方案,修改nginx配置
    https://blog.csdn.net/u012560410/article/details/86489979
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值