ajax http post to https
在本地同一个域http页面请求https页面,其实已经跨域了,我们知道出于安全问题的考虑,浏览器是不允许跨域访问的,那么如果使用ajax来实现跨域访问呢,开发中常用的解决方法很多,比较常用的是JSONP方法、window.name,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。即使使用jquery的jsonp方法,type设为POST,也会自动变为GET
经查资料:
如果跨域使用POST方式,可以使用创建一个隐藏的iframe来实现,但这样会比较麻烦
但是通过服务端设置Access-Control-Allow-Origin来实现跨越访问比较简单
在这里只对Access-Control-Allow-Origin做个小测试
先新建两个jsp页面,一个是test.jsp用来发送请求,accept.jsp用来接收请求
test.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
accept.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
这里accept页面简单的输出success
在浏览器上看看页面效果:
点击submit之后 查看浏览器控制台 正常返回success
那么假设把test.jsp中form的提交的url改成https之后呢。PS:具体本地怎么测试https请参考另一篇本地openssl生成证书
1 | function ajaxSubmit(frm) { |
再看看浏览器效果:出现No ‘Access-Control-Allow-Origin’ header is present on the requested resource
然后在accept.jp加入headerAccess-Control-Allow-Origin
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
- 表示允许任何域名跨域访问 一般线上不这么用,会指定某个域名
最后来看下效果:请求成功返回