前端跨域问题
来源:互联网 发布:windows curl命令详解 编辑:程序博客网 时间:2024/05/18 15:23
跨域
1、域名地址组成
- 域名组成图如下:域名组成.png
- 当协议、主域名、端口号中任意一个不相同时,都算作不同域
- 不同域之间相互请求资源,就算作‘跨域’,如:http://www.abc.com/index.html 请求 http://www.efg.com/app.js
- Javascript 出于安全方面的考虑,有着同源策略的限制,不允许跨域调用其他页面的的对象
- 如下图:跨域情况.png
2、处理跨域方法之一——代理
- 通过在同域名的web服务端创建一个代理
- 北京服务站(域名:www.beijing.com) 广州服务器(域名:www.guangzhou.com)
- 北京服务器的后台 创建一个代理程序 proxy-guangzhouserver.php 来调用广州服务器,然后再把响应数据结果返回给前端,这样前端调用北京服务器的服务和调用广州服务器的效果一样
- 见 代理.png
3、处理跨域方法之二——jsonp
- 用于处理主流浏览器的跨域数据访问的问题
- jsonp只支持get请求,jsonp 是基于 标签的src属性,所以不可能支持 post;jquery的ajax的jsonp支持get,即使在type属性写post,实际请求仍为get请求。标签发起的请求只能是get请求
···前端js
$.ajax({
type:’GET’,
url:’http://127.0.0.1:8080/server.php‘,
dataType:’jsonp’,
jsonp:’callback’, //后端是php代码,可以获取到callback;请求时,在查询字符串的后面将callback写进,如果没有指定jsonp:’callback’,jQuery也会自动帮你指定
success:function(data){
if(data.success){
…
}else{
…
}
}
})
//请求值:=”>http://127.0.0.1:8080/server.php?callback=jQuery111111111111&=….
···
$jsonp=$_GET('callback');$result=$jsonp.'({"success":false,"msg":"...",})';echo $result//返回值:jQuery111111111111({'success':false,"msg":'....'})
4、处理跨域方法之三—— XHR2(或CORS,只支持get\post)
- html5提供的XMLHttpRequest Level2已经释宪案的跨域访问以及其他的一些功能
- IE10以下的版本都不支持
- 在服务器端做一些小的改造即可
···服务器端php语言设置
header(‘Access-Control-Allow-Origin:‘) //指所有域都可以访问,也可以指定某个域可以访问
header(‘Access-Control-Allow-Method:POST,GET’) - 例如:
···前端js $.ajax({ type:'GET', url:'http://127.0.0.1:8080/server.php', dataType:'json', success:function(data){ if(data.success){ }else{ } } }) //请求值:http://127.0.0.1:8080/server.php?callback=jQuery111111111111&_=....···```后台php $jsonp=$_GET('callback'); $result=$jsonp.'({"success":false,"msg":"...",})'; echo $result //返回值:jQuery111111111111({'success':false,"msg":'....'})
上述是常见的几种跨域方式,当然还有很多种跨域方式,如XDR(IE8跨域解决方案),Cross-document messaging和 WebSocket(HTML5解决方案),document.domain、location.hash和window.name(iframe形式), flash socket …
详见 http://www.cnblogs.com/vajoy/p/4295825.html
1 0
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端跨域问题
- 前端开发跨域问题,
- 前端请求跨域问题
- web前端 跨域问题
- 前端跨域问题总结
- 前端跨域的问题
- 前端跨域的问题
- 前端跨域的问题
- 前端解决跨域问题
- web前端技术总结-跨域问题
- ChartDirector MFC 中文乱码解决办法
- HDU 4247 Pinball Game 3D(cdq 分治+树状数组+动态规划)
- 李白打酒
- 微信小程序tabBar显示问题
- POJ 3264 Balanced Lineup 【线段树】
- 前端跨域问题
- 当客户说 “这里有点问题,我想要这样的...”,后面的事你造吗
- 在当前活动返回上一个活动详解
- 【Codeforces 757 Bash's Big Day】+ 手速
- 笔试题9. LeetCode OJ (9) Arithmetic Slices
- Note09--String
- 唐朝CTO,杨潜
- 【ife】任务四十五:多功能相册之木桶布局
- tomcat启动提示端口被占用 maven项目 java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatche