5种处理js跨域问题方法汇总


Posted in Javascript onDecember 04, 2014

前两天碰到一个跨域问题的处理,使用jsonp可以解决。(https://3water.com/article/57889.htm)

最近再整理了一下:

1.jsonp。

   ajax请求,dataType为jsonp。这种形式需要请求在服务端调整为返回callback([json-object])的形式。如果服务端返回的是普通json对象。那么调试的时候,在chrome浏览器的控制台会报"Uncaught SyntaxError: Unexpected token"错误;在firefox浏览器的控制台会报"SyntaxError: missing ; before statement"错误。

2.iframe跨域。

   页面中增加一个iframe元素,在需要调用get请求的时候,将iframe的src设置为get请求的url即可发起get请求的调用。

var url = "http://xxx.xxx.xxx?p1=1&p2=2";

$("#iframe").attr("src", url);//跨域,使用iframe

iframe方式强于jsonp,除了可以处理http请求,还能够跨域实现js调用。

3.script元素的src属性处理

   iframe、img、style、script等元素的src属性可以直接向不同域请求资源,jsonp正是利用script标签跨域请求资源的简单实现,所以这个和jsonp本质一样,同样需要服务端请求返回callback...形式。

var url="http://xxx.xxx.xxx?p1=1";

var script = document.createElement('script');

script.setAttribute('src', url);

document.getElementsByTagName('head')[0].appendChild(script);

4.在服务器使用get处理。

   对于业务上没有硬性要求在前端处理的,可以在服务端做一次封装,再服务端发起调用,这样就可以解决跨域的问题。然后再根据请求是发出就完,还是需要获取返回值,来决定代码使用同步或者异步模式。

        private static void CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)

        {

            if (string.IsNullOrEmpty(url))

            {

                throw new ArgumentNullException("url");

            }

            var request = WebRequest.Create(url) as HttpWebRequest;

            request.Method = "GET";

            if (!string.IsNullOrEmpty(userAgent))

            {

                request.UserAgent = userAgent;

            }

            if (timeout.HasValue)

            {

                request.Timeout = timeout.Value;

            }

            if (cookies != null)

            {

                request.CookieContainer = new CookieContainer();

                request.CookieContainer.Add(cookies);

            }

            request.BeginGetResponse(null,null);//异步

            //return request.GetResponse() as HttpWebResponse;

        }

5.flash跨域

过于尖端了==,再研究

总结:以上5种方法就是常见的解决js跨域问题的处理方法了,最后一种比较高端,等我研究清楚了再补上吧。

Javascript 相关文章推荐
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
JavaScript 学习初步 入门教程
Mar 25 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
微信小程序 九宫格实例代码
Jan 21 Javascript
NestJs 静态目录配置详解
Mar 12 Javascript
新手如何快速理解js异步编程
Jun 24 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 #Javascript
js字符串完全替换函数分享
Dec 03 #Javascript
基于jquery实现等比缩放图片
Dec 03 #Javascript
javascript简单实现图片预加载
Dec 03 #Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 #Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 #Javascript
javascript中clone对象详解
Dec 03 #Javascript
You might like
Terran建筑一览
2020/03/14 星际争霸
php adodb连接不同数据库
2009/03/19 PHP
PHP的全局错误处理详解
2016/04/25 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
代码分析Python地图坐标转换
2018/02/08 Python
python实现小世界网络生成
2019/11/21 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
大专学生求职信
2014/07/04 职场文书
企业挂职心得体会
2014/09/10 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang
golang语言指针操作
2022/04/14 Golang