前端请求跨域理解
来源:互联网 发布:开淘宝能赚钱吗 编辑:程序博客网 时间:2024/06/08 17:22
前端跨域请求发生条件:协议,主机,端口,当有一个条件满足时就会发生跨域问题。
情况1:当我们将网页以本地文件的形式打开的时候,地址栏
files:f:/……
原因:默认是以文件协议打开的,当然不允许调用本地文件,即使也是同源,因为文件协议中不存在调用别的文件这一说法。
情况2:我们通过http协议访问的方式打开网页,因为是本地文件,两者同源,所以能直接请求到本地文件。
情况3:当我们想要访问别的服务器上的文件,那么跨域请求问题就出现了,不在同一个主机上。但是打开浏览器控制台,我们会发现,依然响应成功200,但是却进入ajax的error情况,本质上就是浏览器禁止跨域加载文件,但是我们的xmlHttp请求能发出去。
2.跨域解决办法
1.jsonp
我们发现加载js文件的时候并不受浏览器跨域限制,所以我们可以让服务器返回一个带有script标签的文件,这样浏览器就不会限制了,更庆幸的是在ajax中已经为我们封装好了jsonp请求。
$.ajax({ type: "get", async: false, url: "http://192.168.1.102:8080/mghy/shanpao/training/action/label_image/v2?imageFile=/root/Desktop/shanpaoai/sample_images/classify1.jpg&lastFrame=true", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"result",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(json){ document.getElementById("content").innerHTML=json.msg; }, error: function(){ alert('fail'); } });
以上强调:ajax本质上是封装了xmlhttp请求,来获取非本页的东西,而jsonp的本质是要添加script标签来逃过浏览器的限制,只不过jquery封装在了ajax中,并不能改变他的本质,就如我们也可以在后台服务端代理请求别的 服务器。
2.后台代理
跨域请求文件时,通过调用后台servelet,来代理我们请求,然后返回给前台,相当于绕过浏览器,自然不存在跨域问题。
3.h5websocket
正在学习
阅读全文
0 0
- 前端请求跨域理解
- 前端请求跨域问题
- 前端开发跨域请求
- 前端跨域请求解决方案
- 前端JS跨域请求
- 前端跨域简单理解
- 【前端】jquery跨域请求javaServlet
- 前端跨域请求原理及实践
- 前端跨域请求原理及实践
- 前端跨域请求原理及实践
- 前端跨域请求原理及实践
- 前端跨域请求解决方案汇总
- 前端跨域请求解决方案汇总
- 前端跨域请求原理及实践
- 前端跨域请求原理及实践
- 前端跨域请求原理及实践
- 前端面试之跨域请求
- 前端跨域请求原理及实践
- 51nod 1779 逆序对统计【状压DP】
- hadoop踩坑记2--伪分布式部署
- Spectrum数字化仪为东京大学最高的室内磁场中心提供核心部件
- MACOS下解决git push error: Permission to XXX.git denied to XXX
- HDU5800 To My Girlfrend(计数dp)
- 前端请求跨域理解
- 静态导入 import static
- 第四大周总结
- Struts2的第二天(Action接收请求参数)
- 谁知道这是什么??????????????????????????????????????
- get标签
- 了解和配置 PAM
- 给Krpano小白们的最最最入门级教程(二)
- 两招修改Centos7 系统时区!