• 跨域访问的解决方案


    # 跨域
    注:本文使用markdown格式写的笔记,最好通过markdown观看体验更好
     
    ## 概念
    1. 同源:
    协议,IP地址,端口三者一致叫做同源.
    2. 跨域
    协议,IP地址,端口三者有一个不一样及不同源,需要跨域访问.
     
    ## 两种解决跨域的方式
    ### cors (cross origin resource sharing)
    跨域资源共享,这是html5支持的方法.IE8及以下不支持. 需要在服务器后台设置头
    ```php
    header("Access-Control-Allow-Origin:*");
    ```
    ### jsonp(JSON with Padding)
    **JSONP是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的script 元素是一个例外。利用 的script 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。**
     
    - 原生jsonp步骤
    1. 在js中创建函数
    ```JavaScript
    function doSomething(backDate) {
    console.log(backDate);
    }
    ```
    2. 利用script标签的src属性发送跨域请求获取资源
    ```JavaScript
    <script scr="xxx.php?callback=doSomething"></script>
    ```
    3. 在后台接收数据,拼接字符串,返回结果调用doSomething函数.
     
    ```php
    $func = $_GET["callback"];
    echo $func.'({"name":"jack","age":28})';
    ```
    - jQuery中jsonp的写法
    ```JavaScript
    $.get({
    url:"xxx.php",
    success: function(backData) {
    console.log(backData);
    },
    dataType:"jsonp"
    })
    ```
    > 注:jsonp虽然是用的jQuery中ajax的方法,但jsonp和ajax没有任何关系.
    jsonp只是利用script标签src的属性用get的方式传递数据给后台.然后后台通过字符串的拼接返回一个调用函数的结果.在浏览器中解析
     
     
  • 相关阅读:
    后台向前台输出 换行“ ”
    Razor视图引擎输出没有编码的 Html 字符串
    C#之delegate
    C#之Action
    What's New in C# 6.0
    Git 放弃修改
    Spring.Net+Nhibernate
    nmap扫描ip段
    nginx多个if条件并且查询
    查看哪些redis命令拖慢了redis
  • 原文地址:https://www.cnblogs.com/htmlli/p/7910936.html
Copyright © 2020-2023  润新知