zoukankan      html  css  js  c++  java
  • 跨域

    跨域

    • 我们在运行程序时,localhost和127.0.0.1在互换时经常会报这样的错误:要请求的资源上没有访问控制源。那么这个问题怎么解决呢?这个错误的原因就是当前发起请求的页面要请求的资源不是同一个服务器标志也就是跨域

    跨域的基本介绍

    • 跨域的概念:不同源的叫做跨域
    • 同源:同服务,同地址,同端口的叫同源
    • 跨域存在的原因:浏览器为了安全考虑提出的让域和域之间不共源。
    • 跨域发生的条件:当本地服务器请求服务器上数据的时候会发生跨域
    • 跨域的过程:请求成功,数据可以拿到但是浏览器单方面阻止,报错。
    • 跨域的前端解决方式:jsonp

    jsonp

    • 程序员自己发明的,没有官方支持,利用现有特点组合起的解决方式
    • jsonp的原理:浏览器阻止了ajax的跨域,但是没有阻止标签请求外部资源的跨域,所有利用这个特点解决跨域
    • jsonp的封装:(调用就行啦)
    function jsonp(url,callback,data){
        var str = "";
        for(var i in data){
            str += `${i}=${data[i]}&`;
        }
        url = url + "?" + str;
        var script = document.createElement("script");
        script.src = url;
        document.body.appendChild(script);
    
        window[data[data.customName]] = function(res){
            callback(res);
        }
    }
    
    
    • 其他解决方式
      • 后台的跨域解决方案:CORS跨域:在php中加入以下两句就可以实现跨域访问
    header('Access-Control-Allow-Origin:*');//允许所有来源访问
    header('Access-Control-Allow-Method:POST,GET');//允许访问的方式
    
  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/tongmeng/p/11742190.html
Copyright © 2011-2022 走看看