• Http CORS 跨域请求


    has been blocked by CORS policy: Response to preflight request doesn‘t pass access control check 报错

    由于浏览器将CORS请求分为两类:简单请求(simple request)和非简单请求(not-simple-request)。非简单请求 会在正式通信之前,增加一次HTTP请求,称之为预检请求。浏览器会先发起OPTIONS方法到服务器,以获知服务器是否允许该实际请求。
    这是在第一次预请求时候没有请求成功,预请求不成功。

    第一,先找到后台对应的接口,让后台去检查接口是否有抛出异常但是没有正常捕获。
    第二,前端vue中注意点是请求的时候有没有使用content-type:application/json还有qs.string()

    作者:最进
    链接:https://www.jianshu.com/p/a2fd613a825c
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案

    JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

    不管是Node中间件代理还是nginx反向代理,主要是通过同源策略对服务器不加限制。

    login.html

    
    
    
        
        SSO服务
        
        
    
    
    
        

    SSO登录 参数: {"account":"15029200344", "password":"123456", "captcha": "", "captchaType": 0}

    用户名: 密码:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    login.js

    $(function () {
        //给登录按钮绑定单击事件
        console.log("---start-----")
    
        var account = $("#account").val().trim();
        var password = $("#password").val().trim();
        console.log("account:" + account + ", password:" + password)
        var token = "";
        $("#submit").click(function () {
            //2.发送ajax请求,提交表单数据
            // $.post("/sso/login"), $("#loginForm").serialize(), function (data){ console.log(data) }
            var dataForm = {
                "account": account,
                "password": password,
                "captcha": "",
                "captchaType": 0
            }
    
            // http://localhost:8101/sso/login
    
            $.ajax({
                url: "/sso/login",
                type: "post",
                headers: {
                    "Authorization": "Bearer " + token,
                    "token": token
                },
                contentType: "application/json;charset=utf-8",
                //dataType: "json",
                data: JSON.stringify(dataForm),
                beforeSend: function(req){
                    console.log(window.location)
                    //console.log(req)
                },
                success: function (rsp) {
                    //debugger
                    console.log(JSON.stringify(rsp))
    
                    if (rsp.code == 200) {
                        token = rsp.data.token
                        //window.location = "/index.html"
                    }
                },
                error() {
                    console.log("error1")
                }
            });
        });
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    参考资料

    跨域处理 SpringBoot、SpringMVC、SpringSecurity
    https://zszxz.com/article/213

    Spring Security拦截器引起Java CORS跨域失败的问题及解决
    http://www.cppcns.com/ruanjian/java/409340.html
    https://www.jb51.net/article/217619.htm

    九种跨域方式实现原理
    https://blog.csdn.net/qq_42380656/article/details/96479597

  • 相关阅读:
    客厅窗帘要安装纱帘吗?怎么选择纱帘?-好佳居窗帘十大品牌
    Qt 5中文乱码问题
    idea使用git版本控制
    检查网络端口是否正常
    除了鲁大师,你还可以装这些。
    架构,平台,框架的区别和联系
    Codeforces Round 908 (Div 2——AB)
    python中类的内置函数有哪些
    【gtp&JavaScript】使用JavaScript实现套壳gtp与gtp打字输出效果
    基于图像形态学处理和边缘提取算法的路面裂痕检测matlab仿真
  • 原文地址:https://blog.csdn.net/qq_19636353/article/details/126302533