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

2015-06-08 15:56:18 +08:00
 lshero
由于要求所有的登录都要走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 提交表单有没有什么正确的姿势?
2516 次点击
所在节点    问与答
7 条回复
lshero
2015-06-08 16:13:18 +08:00
脑子短路了 直接用jsonp不就好了.....
pubby
2015-06-08 16:29:04 +08:00
jsonp 那是 GET
lshero
2015-06-08 16:37:38 +08:00
@pubby 反正提交到HTTPS上get不get也无所谓啦,要是去折腾iframe估计更悲催
maxsec
2015-06-08 18:51:07 +08:00
<form action="https://xxxx" method="POST">
</form>
这样不行吗
m939594960
2015-06-09 00:38:58 +08:00
用form target到iframe能不能行呢
lshero
2015-06-09 01:01:38 +08:00
@m939594960 http没啥问题https弄得很折腾没有再弄了
wangxiao2015
2015-06-17 21:19:58 +08:00
首先你要了解为什么会出现这些问题,还有要了解改成 https 的必要性。

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

改成 https 是否必要?是的,千万别用什么 jsonp 之类的过时垃圾技术(jsonp 写出来的接口还不兼容其他端,需要做 hack)。互联网最初设计的人员都是善良的,所以没有过多的考虑安全性,http 是非常容易被伪造和被监听的,https 可以一定程度上保证安全性(中间人攻击除外),而且目前的一个趋势是全站 https 化,包括 WebSocket 要走 wss 协议。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX