zoukankan      html  css  js  c++  java
  • ajax跨域

    ajax跨域简单来说,就是网站A去调用网站B的数据
    但是ajax跨域存在一个问题---浏览器的同源策略,该策略会阻止ajax跨域访问
    同源策略(Same origin policy)是一种约定,他是浏览器的一种安全功能
    同源:同域名, 同协议, 同端口;不同源则为跨域
    例如:
    http://www.wxample.com
    https://api.wxample.com 不同源 域名不同
    http://www.wxample.com 不同源 协议不同
    http://www.wxample.com:8080/detail.html 不同源 端口不同
    http://api.wxample.com:8080/detail.html 不同源 域名,端口不同
    https://api.wxample.com/detail.html 不同源 协议,域名不同
    https://www.wxample.com:8080/detail.html 不同源 端口,协议不同
    http://www.wxample.com/index.html 同源 只有目录不同
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    只要看到 ’Access-Control-Allow-Origin‘ 就说明,ajax请求被同源策略限制了。
     
    解决跨域问题有三种方式:
    ①服务器代理
    ②cors
    ③jsonp
     
    jsonp跨域
    jsonp(JSON with Padding [带填充的JSON]): 是一种解决ajax跨域问题的方案(padding 填充)
    核心思想: 浏览器虽然有同源策略,但是src和href两个属性却可以跨域访问,可以利用这一'漏洞'发送ajax请求
     
    $.ajax方法跨域----jsonp
    $.post、$.get、$.ajax都能发送跨域请求,但是 $.get、$.post是要依靠cors方式的, 只有$.ajax能使用jsonp方式
     
    核心:
    必须设置请求类型为get ---  type: ‘get’
    必须设置dataType为jsonp --- dataType: ‘jsonp’
    必须额外设置一个jsonp参数,该参数值可以是任何英文字符串,常用callback。==该函数的作用是在前端自动创建一个以该字符串为名称的函数名==
    示例:
    $.ajax({
        url: '请求地址',
        type: 'get',   
        dataType: 'jsonp',   
        jsonp: 'callback',  //解决前后端函数名统一的问题   
        success: function(msg){
            alert(msg);
            alert(msg.name);
        }
    })
     
     
  • 相关阅读:
    BootstrapValidator 解决多属性被同时校验问题《转》
    SSRS 浮动表头设置
    ToString(string format)输出格式简述
    配置AutoMapper映射规则《转》
    IE浏览器上传图片预览兼容(IE 7 8 9 10 11)
    SQL : IN 和 Exists 的区别
    BitArray简单例子
    Rx.net 例子——(1)基础
    C# Pinvoke判断是UEFI模式还是BIOS模式
    wpf Route Event Code Snippet
  • 原文地址:https://www.cnblogs.com/maxiag/p/12340306.html
Copyright © 2011-2022 走看看