lshero
V2EX  ›  问与答

HTTPS AJAX 提交表单有没有什么正确的姿势?

  •  
  •   lshero · Jun 8, 2015 · 3097 views
    This topic created in 4131 days ago, the information mentioned may be changed or developed.
    由于要求所有的登录都要走HTTPS,PM死作死作的不用统一登陆并且又要自己做一个AJAX登陆,所以就产生了一堆问题。

    比如HTTPS下写的Cookie HTTP下无法读取,还好公司的帐户体系有单点登陆的登陆串,HTTPS下获取到了单点登陆串之后传给HTTP算是解决问题。

    由于只有线上有HTTPS环境上线后发现貌似也就Chrome 可以直接在HTTP上解析HTTPS返回的JSON 前提还是添加了Access-Control-Allow-Origin 的Header头

    IE之类的浏览器似乎不能在HTTP下直接用jQuery向HTTPS域发送AJAX请求,所以最后想到了用iFrame来实现。但是最后上线使用各种浏览器调试似乎都没有通过。
    给出提示The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.
    所以我想问一下 HTTP给HTTPS 提交表单有没有什么正确的姿势?
    7 replies  •  2015-06-17 21:19:58 +08:00
    lshero
        1
    lshero  
    OP
       Jun 8, 2015   ❤️ 1
    脑子短路了 直接用jsonp不就好了.....
    pubby
        2
    pubby  
       Jun 8, 2015
    jsonp 那是 GET
    lshero
        3
    lshero  
    OP
       Jun 8, 2015
    @pubby 反正提交到HTTPS上get不get也无所谓啦,要是去折腾iframe估计更悲催
    maxsec
        4
    maxsec  
       Jun 8, 2015
    <form action="https://xxxx" method="POST">
    </form>
    这样不行吗
    m939594960
        5
    m939594960  
       Jun 9, 2015 via Android
    用form target到iframe能不能行呢
    lshero
        6
    lshero  
    OP
       Jun 9, 2015
    @m939594960 http没啥问题https弄得很折腾没有再弄了
    wangxiao2015
        7
    wangxiao2015  
       Jun 17, 2015
    首先你要了解为什么会出现这些问题,还有要了解改成 https 的必要性。

    为什么出现这些问题?主要是因为浏览器的安全性设计,浏览器安全是基于域的,所以不同域就会产生跨域问题。比如 https://www.baidu.com 和 http://www.baidu.com 就是不同的域,也就会跨域。这也就是为什么在 response header 中加上 Access-Control-Allow-Origin 就会正常的原因。

    改成 https 是否必要?是的,千万别用什么 jsonp 之类的过时垃圾技术(jsonp 写出来的接口还不兼容其他端,需要做 hack)。互联网最初设计的人员都是善良的,所以没有过多的考虑安全性,http 是非常容易被伪造和被监听的,https 可以一定程度上保证安全性(中间人攻击除外),而且目前的一个趋势是全站 https 化,包括 WebSocket 要走 wss 协议。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3833 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:12 · PVG 18:12 · LAX 03:12 · JFK 06:12
    ♥ Do have faith in what you're doing.