zoukankan      html  css  js  c++  java
  • 跨域

    跨域问题

    浏览器在解析js代码时,发现js代码请求了一个不属于当前服务器的资源,这时候就属于跨域

    浏览器遵循同源策略,无法访问跨域资源

    同源: 协议+ip+端口

    移动端不存在跨域问题,同源策略是浏览器的策略

    解决跨域

    在响应头中明确指出,对方可信的

    response.setHeader("Access-Control-Allow-Origin","*") 
    //*一般用于测试  部署时指定为静态服务器地址
    
    //指定允许其他域名访问 
    'Access-Control-Allow-Origin:http://XXX.XXX.XXX'
    //一般用法(*,指定域,动态设置),注意*不允许携带认证头和cookies
    
    
    //预检查间隔时间 
    'Access-Control-Max-Age: 1800' 
    
    
    //允许的请求类型 
    'Access-Control-Allow-Methods:GET,POST,PUT,POST'
    
    
    //列出必须携带的字段 
    'Access-Control-Allow-Headers:x-requested-with,content-type'
    

    补充

    默认Cookie不允许跨域

    • 前端 ajax配置
    <script>
        $("#log").click(function(){
            $.ajax({
                type : "POST",
                url : "http://localhost:8080/FBAssignment_war_exploded/login",
                data : {"username":$("#user").val(),"password":$("#pwd").val()},
                ####################################################
                xhrFields:{
                    withCredentials:true  //携带跨域cookie
                    
                },
                #####################################################
                success : function(result) {
                    if(result.status!=200){
                        $("#err").html(result.error)
                    }else {
                        alert("登陆成功!")
                    }
                },
                error : function(e){
                    $("#err").html("系统错误!");
                }
            })
        });
    </script>
    
    • 后端响应中添加字段,说明允许cookie跨域
    response.setHeader('Access-Control-Allow-Credentials,true) 
    
  • 相关阅读:
    大道至简读后感
    机器学习十讲(一)
    第一个TensorFlow的简单例子
    初识深度学习
    如何使用本地的Navicat连接服务器中的Mysql
    阿里云ECS-安装Tomcat
    阿里云ECS-CentOS 8上安装MySQL 8.0
    阿里云ECS--CentOS8安装jdk1.8
    进度报告十(重大技术需求)
    进度报告九 (重大技术需求调研)
  • 原文地址:https://www.cnblogs.com/tangshuo/p/12744311.html
Copyright © 2011-2022 走看看