本文主要是介绍老式浏览器跨域问题如何解决?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求
解决老版本浏览器跨域名访问问题,例如IE8,IE9
方案
使用JSONP
客户端配置
js原生实现
<script type="text/javascript">function func(arg) {console.log(arg);}
</script>
<script type="text/javascript" src="http://localhost:8005/oss_sign/?callback=func"></script>
切记,两个script顺序不能错,浏览器按照文档流从上到下逐步解析页面
jQuery实现
<script>$(document).ready(function () {$.ajax({async: false,url: "http://localhost:8005/oss_sign/",dataType: "jsonp",jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名jsonpCallback: "func", //自定义的jsonp回调函数名称success: function(json) {console.log(json);},error: function() {alert("error");}});});
</script>
服务端配置
使用django框架,视图函数如下,
def oss_sign(request):callback = request.GET.get("callback") # callback一般为固定参数名,接收js函数名,当然可以修改为其它名字,前后台保持一致即可data = json.dumps({"username": "ss"}) # 前端需要获取的参数return HttpResponse("%s(%s)" % (callback, data))
演示
JSONPk产生原理
这篇关于老式浏览器跨域问题如何解决?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!