跨域问题(什么是跨域问题

拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3e17cc6dfb2c43d1-ua98).
重新安装浏览器,或使用别的浏览器Http跨域时的Option请求Http跨域时的Option请求万物互联互通百家号写这篇文章时,我们碰到的一个场景是:要给R系统做一个扩展小应用,前端的html、js放在R系统里,后端需要做一个单独的站点N.B.com。这就导致了跨域问题,而且要命的是,后端同学没有权限向招聘的系统里加接口做后端跨域,因此只能做个接口允许前端跨域访问。有两种方案:1. 使用ajax直接跨域访问,2.使用JsonP。实际使用时,由于JsonP向Server提交URL的长度限制在8000字符,超过了则被浏览器拒绝,因此不采用。对于第一种方案,后端需要做的工作是:接口允许允许跨域请求:header('Access-Control-Allow-Origin:*'); //支持全域名访问,不安全,部署后需要限制为R.comheader('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); //支持的http动作header('Access-Control-Allow-Headers:x-requested-with,content-type'); //响应头 请按照自己需求添加。前端发起跨域请求:就是正常的$.ajax请求即可。但是,碰到个问题,国内网站基本没有讲,就是option请求问题。。简要翻译内容如下:在正式跨域的请求前,浏览器会根据需要,发起一个“PreFlight”(也就是Option请求),用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源,或者域),还有是否需要Credentials(认证信息)三种场景:1. 如果跨域的请求是Simple Request(简单请求 ),则不会触发“PreFlight”。Mozilla对于简单请求的要求是:以下三项必须都成立:1. 只能是Get、Head、Post方法2. 除了浏览器自己在Http头上加的信息(如Connection、User-Agent),开发者只能加这几个:Accept、Accept-Language、Content-Type、。。。。3. Content-Type只能取这几个值:2. 其他会导致“PreFlight”的请求。条件基本上是简单请求的补集。。比如我们的这个请求:3. 如果是PreFlight request 并且是Redirect的:浏览器直接给拒了 _(:з」∠)_ 。没太弄明白场景。。如果真想跨域跳转,发一个Simple Request就OK。。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。万物互联互通百家号最近更新:简介:万物互联,让我们一起迷醉于互联网作者最新文章相关文章  1.就是跨域名,跨端口,跨协议
& & &例如:如果有两个服务器,服务器A和服务器B,服务器A上存储了php数据,script,甚至是css这些文件,而你在服务器B上只写了html,然后你所在的服务器B上动态创建script,css,php数据(使用ajax请求),向服务器A上请求你想要的script,css,php数请求据(使用ajax)这些文件,请求这些文件后,你再在服务器B上运行你的html,虽然你的地址是在服务器B上,但是你还是可以运行效果与在服务器A上运行的效果是一样的,这样就是跨域名,跨端口,跨协议,实现了跨域。
  简单来说,就是你请求的文件,只要含有“src”,“href”这些属性,你就能在其他服务器上,请求你所需要的文件,然后在自己的服务器上运行,就实现了跨域(跨域名,跨端口,跨协议)。
原生的动态请求script文件&
  var _script = document.createElement("script");   _script.src="http://10.9.156.108/html5/Ajax/api/sendMessage.php?user="+_user+"message="+_   _script.type="text/javascript";
jQuery跨域请求script文件
$(document).ready(function(){   //getJSON 后面带参数,如果不带参数默认不跨域 ,带了参数跨域
  //跨域优先  $.&link rel="icon" href="../img/favicon.ico" type="image/x-icon"&("http://10.9.156.108/HTML5/lesson24/test.js?callback=?",[data],function(){});
  //跨域 &有getJSON 和 jsonp 两种方式   $.get("http://10.9.156.108/HTML5/lesson24/test.js=",null,function(){},"jsonp");     });
  1.就是同域名,同端口,同协议
  例如:如果你有一个服务器A,你所需要的script,css,php文件都在服务器A,你写的html也在服务器A上,然后运行,出现了效果,如果你想在另一台电脑上运行你的项目(注意另一台电脑无论有没有开启服务器,效果还是会显示出来的),只要把你写在服务器A上的协议,域名,端口以及你的项目名称复制下来,在另一台电脑上运行,同样会出现相同的效果,这就实现了同源。
  简单来说,就是你的协议,域名,端口甚至项目名称都一样,不同电脑都能实现同样的效果。
无论是同台电脑,还是不同台电脑,与是不是同一台电脑没有关系,都能实现跨域和同源。
什么是协议,域名,端口?
解释:假如一个网址是 &http://baidu.com:8080?user=name&pwd=password
http:// & 是协议 &&
baidu.com &是域名(注意:前面加上“wwww”即www.baidu.com不是域名)
8080 &是端口 & &
user=name&pwd=password & 是地址带的参数
阅读(...) 评论()104被浏览23,159分享邀请回答http://www.cnblogs.com/hyddd/archive//1432744.html
一.CSRF是什么?  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么?  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。三.CSRF漏洞现状  CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。四.CSRF的原理  下图简单阐述了CSRF攻击的思想:307 条评论分享收藏感谢收起a.com/delUser,就可以实现删除操作。好现在说B网站,B网站被攻击了,别人种下了恶意代码,你点开的时候就会模拟跨域请求,如果是针对你,那么就可以模拟对A站的跨域请求,恰好这个时候你已经在A站登陆了。那么攻击者在B站内通过脚本,模拟一个用户删除操作是很简单的。面对这种问题,有从浏览器解决,但个人认为最好是从网站端解决,检测每次POST过来数据时热refer,添加accesstoken等都是好方法。希望对你有帮助67 条评论分享收藏感谢收起

我要回帖

更多关于 什么是跨域的问题 的文章

 

随机推荐