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 相关文章推荐
JavaScript可否多线程? 深入理解JavaScript定时机制
May 23 Javascript
file模式访问网页时iframe高度自适应解决方案
Jan 16 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
理解AngularJs指令
Dec 10 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
利用js实现前后台传送Json的示例代码
Mar 29 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
Sep 06 Javascript
JS中==、===你分清楚了吗
Mar 04 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 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
中篇:安装及配置PHP
2006/12/13 PHP
php 获取mysql数据库信息代码
2009/03/12 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
10个顶级Python实用库推荐
2021/03/04 Python
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
门卫岗位职责
2013/11/15 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
我的求职计划书
2014/01/10 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
慰问信格式规范
2015/03/23 职场文书
开会通知
2015/04/20 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS