3.跨域

作者: 若愚同学 | 来源:发表于2018-06-12 22:28 被阅读0次
什么是跨域?

js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。

出现跨域问题时,火狐会有提示:

已拦截跨源请求:同源策略禁止读取位于http://localhost/xxx的远程访问,(原因:CROS头缺少 'Access-Control-Allow-Origin').

使用JSONP来解决跨域问题:

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不同域的服务器交互,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 数据,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

原理:
1.定义一个方法来处理返回的结果(该方法必须在script引入之前声明)


2.使用script标签去请求跨域地址的数据

3.后台需要配置返回js直译器能解析的语句,并且要带上需要返回的参数

4.使用jQuery提供的工具
JS代码:
  • 普通方式
<script type="text/javascript">
function showData(data){
    if(data.success){
        console.log("请求成功");
    }
}
</script>
<script type="text/javascript" src="http://localhost/hello?callback=showData"></script>
  • jQuery方式
<script type="text/javascript">

    //请求携带的参数中不用写值,jQuery会自动生成
    $.getJSON("http://localhost/hello?callback=?",function(data){
        console.log(data);
    });
</script>
java代码:
public void service(ServletRequest req, ServletResponse res)
        throws ServletException, IOException {
    // TODO Auto-generated method stub
    System.out.println("世间若有比雷声更大的声响,唯有我熊哥大嗓门!");
    
    String callback = req.getParameter("callback");
    
    res.getWriter().print(callback + "({'success':true})");
}

相关文章

  • 3.跨域

    什么是跨域? js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过...

  • 最直白的跨域

    跨域的背景 1.为了安全我们的浏览器有同源策略。使我们不方便跨域访问。2.出于种种原因我们就是要跨域访问。3.前辈...

  • 深入跨域问题(3) - 利用 JSONP 解决跨域

    深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域深入跨域问题...

  • ajax跨域

    1.可以用jsonp 2.$.getJSON的方式解决, 3.还可以直接用后台请求跨域 注意:跨域限制访问,其实是...

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • Web前后端跨域问题处理

    跨域问题有前台跨域(iframe间)和后台跨域。 前台跨域的解决方案可以采用跨域文档通讯(Cross domain...

  • 跨域

    跨域 什么是跨域: 解决跨域 通过jsonp原理:在页面引入跨域js和css时,没有存在跨域问题.因此可以动态创建...

  • drf+xadmin电商平台 vue展示商品分类数据

    一 drf+vue 解决跨域问题 1.前端代理设置 2.服务器设置 设置django来解决跨域问题 3.在gith...

  • 跨域问题详解分析

    参考文档 CORS详解 跨域资源共享 CORS 详解 js中几种实用的跨域方法原理详解 跨域的那些事儿 跨域与跨域...

  • 几种跨域的方式

    1. JSONP 2.CORS 3.降域 a.html b.html 4.postMessage跨域 a.htm...

网友评论

      本文标题:3.跨域

      本文链接:https://www.haomeiwen.com/subject/qfqdeftx.html