zoukankan      html  css  js  c++  java
  • js,java,ajax实现跨域访问及其原理

    http://blog.csdn.net/saytime/article/details/51540876

    这篇文章对跨域访问做了较为细致得分析,我这里做下简单总结

    1.实现跨域访问原理:

      浏览器由于同源策略不能做跨域访问,但是<script>标签是开放策略能够跨域访问,所以突破口就是通过<script>来实现跨域访问获得其他地方得json数据

      jsonp模式:

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

    2.需要注意得点:

      通过script获得内容只有script标签能识别得数据才不会报错,所以想要通过这种方式获得数据,需要将这个数据封装起来,变成script能够识别得,此时我们可以设置一个回调函数callback,本域有,其他域同样也有,达到将数据弄过来得效果。

    3.jquey实现方式

    $.ajax({
                url:'http://localhost:8888/other/other.jsp',
                type:'post',
                data:{'params':'fromjsonp'},
                dataType: "jsonp",
                jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
                jsonpCallback:"getResult",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以不写这个参数,jQuery会自动为你处理数据
                success: function(data){
                },
                error: function(){
                    alert('fail');
                }
            });

      这里jsonp:通过它能获得对应得回调函数getParms(callback)获得真正回调函数,一般jquey不指定的话也会自动生成一个回调函数

      其他域也许有这个函数使用得到得内容需符合script语法,能被识别

      

  • 相关阅读:
    jquery $(document).ready() 与window.onload的区别
    【Ionic+AngularJS 开发】之『个人日常管理』App(二)
    【Ionic+AngularJS 开发】之『个人日常管理』App(一)
    移动App服务端架构设计
    jQuery 事件用法详解
    CSS实现的几款不错的菜单栏
    css清除浮动的方法总结
    常见浏览器的兼容问题
    推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
    如何用js获取浏览器URL中查询字符串的参数
  • 原文地址:https://www.cnblogs.com/xiaoping1993/p/8418346.html
Copyright © 2011-2022 走看看