博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Todo】JS跨域访问问题的解决
阅读量:6586 次
发布时间:2019-06-24

本文共 1947 字,大约阅读时间需要 6 分钟。

做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块。而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问。

参考 http://www.cnblogs.com/2050/p/3191744.html

 

方案1:

在js中,我们虽然不能直接用XMLHttpRequest请求不同域上的数据时,但是在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。

jquery的jsonp形式:

服务器端如下:        protected void Page_Load(object sender, EventArgs e)        {            string callback = Request.QueryString["jsoncallback"];            string result = callback + "({\"name\":\"zhangsan\",\"date\":\"2012-12-03\"})";            Response.Clear();            Response.Write(result);            Response.End();        }客户端:$.ajax({                 async: false,                 url: "http://192.168.0.5/Web/web1.aspx",                 type: "GET",                 dataType: 'jsonp',                 //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.                 jsonp: 'jsoncallback',                 //要传递的参数,没有传参时,也一定要写上                   data: null,                 timeout: 5000,                 //返回Json类型                   contentType: "application/json;utf-8",                 //服务器段返回的对象包含name,data属性.                 success: function (result) {                     alert(result.date);                 },                 error: function (jqXHR, textStatus, errorThrown) {                     alert(textStatus);                 }             });实际上,在我们执行这段js时,js向服务器发出了这样一个请求:http://192.168.0.5/Web/web1.aspx?jsoncallback=jsonp1354505244726&_=1354505244742 而服务器也相应的返回了如下对象:jsonp1354506338864({
"name":"zhangsan","date":"2012-12-03"})此时就实现了跨域范文数据的要求.

这一篇 http://blog.csdn.net/u012028371/article/details/52926487

里面还提到了验证js节点加载的完毕:

ie只能通过script的readystatechange属性,其它浏览器是script的load事件。 js.onload = js.onreadystatechange = function() {    if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {        // callback在此处执行        js.onload = js.onreadystatechange = null;    }};

方案2 

通过修改document.domain来跨子域

估计不行,因为我们修改不了糯米主页的domain

方案3

使用window.name来进行跨域 (这个主要解决的跳转页面前后数据关联)

 

 

 

你可能感兴趣的文章
编程语言安全性排行榜:Ruby最佳,C语言漏洞最多?
查看>>
VS2015将于7月20日发布,所支持的C++特性已经完成
查看>>
EGO走进美团——追寻千亿市场背后的技术力量
查看>>
Docker加入裁员大军,关键时期Docker将何去何从?
查看>>
浏览器厂商开始默认支持WebAssembly格式
查看>>
Coolblue的持续部署
查看>>
无服务平台性能比较
查看>>
时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
查看>>
OpsRamp推出以服务为中心的AIOps和云监控功能
查看>>
微服务:更愉快还是更嘈杂?
查看>>
GitLab容器注册服务已集成于Docker容器
查看>>
针对ASP.NET Core Web API的先进架构
查看>>
关于CSS一些细节问题
查看>>
如果功能标志出错的话
查看>>
世界政府峰会发布了《在区块链上构建超互联未来》文件
查看>>
2018视频人物识别挑战赛冠军经验分享:在现有机器资源条件下更快速验证是关键...
查看>>
机器学习平台跃迁,AI中台才是大势所趋
查看>>
性能翻倍!斯坦福Matei团队推出机器学习模型优化新方法
查看>>
Spring Security 5.0.0正式发布
查看>>
Docker4Dev #7 新瓶装老酒 – 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用
查看>>