web开发跨域问题个人总结(PHP与js交互)
2015-12-27 22:21
656 查看
之所以想总结一下,这个我最近接手的一个新项目有关:我们公司中的另一个站点需要跨站点请求我这边一个‘评论’组件的功能。本来如果走的是接口调用也没这么多问题,可是公司考虑到评论组件公司里的其他五个站点都要用到,所以在js层面想实现一个插件的功能,所有接口请求都由js来实现。废话不多说。
1.什么叫做跨域?
这里我根据我看到的相关资料说一下我的理解,如有错误欢迎指正:最常见的跨域就是一个URL请求另一站点的URL,例如:www.baidu.com向腾讯请求一个第三方接口。还有另外一种跨域:同一站点下的不同端口之间的请求也称之为跨域。
3.解决办法二
利用jsonp(JQuery提供的一种方式),只需在PHP代码中将即将要返回的数组与jsonp标记连接成字符串即可,例如
补充说明:JSONP方式跨域提交数据的方式为get,即使你将提交的json数组type改为post,后台依旧是用get方式传输,这个官方文档中有说明。用get方式传递的时候,数据大小就有了限制。所以如果是传递附件之类的大文件,跨域提交使用的是flash的uploadify以post方式上传(可参考http://wangyaobeijing.blog.163.com/blog/static/1583303201101391530509/)。
1.什么叫做跨域?
这里我根据我看到的相关资料说一下我的理解,如有错误欢迎指正:最常见的跨域就是一个URL请求另一站点的URL,例如:www.baidu.com向腾讯请求一个第三方接口。还有另外一种跨域:同一站点下的不同端口之间的请求也称之为跨域。
2.解决办法一
在调用的接口的构造函数中第一行添加header('Access-Control-Allow-Origin:
*');即可解决,其中‘*’代表所有的站点都被允许请求。这种办法对IE9以及以下版本的浏览器“无感”。
3.解决办法二利用jsonp(JQuery提供的一种方式),只需在PHP代码中将即将要返回的数组与jsonp标记连接成字符串即可,例如
if($result){ $callback.'('.json_encode($result).')'//这里的callback是与前端js约定好的一个名称 }这里只列举了PHP部分针对Jsonp处理的方法,具体js怎样实现可参考:http://www.cnblogs.com/xcxc/p/3729660.html
补充说明:JSONP方式跨域提交数据的方式为get,即使你将提交的json数组type改为post,后台依旧是用get方式传输,这个官方文档中有说明。用get方式传递的时候,数据大小就有了限制。所以如果是传递附件之类的大文件,跨域提交使用的是flash的uploadify以post方式上传(可参考http://wangyaobeijing.blog.163.com/blog/static/1583303201101391530509/)。
$.ajax({ type : "post", url : "ajax.php", dataType : "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 success : function(json){ alert('success'); }, error:function(){ alert('fail'); } });
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- [备忘] 查看浏览器中flash swf的trace调试输出
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- flash 系统字体显示问题
- 比较完整简洁的Flash处理XML文档数据教程 上篇第1/3页
- Flash ActionScript 中按钮和电影剪辑的事件和方法
- flash 编程习惯 小结
- flash as2.0组件样式修改方法(直接改元件就行喽)
- FLASH自动判断域名然后转向等操作
- Flash简单加密 限制 Flash 在指定域名/网址中播放的方法
- 在网页中怎样给已发布的Flash添加链接的方法
- FLASH 多参数的URL地址(带&符号)
- Flex Flash的关系分析