解决 jquery 跨域 cookie 丢失问题

本贴最后更新于 1602 天前,其中的信息可能已经沧海桑田

方法一:

采用 jsonp 方式实现解决,建议采取这种方式实现。

前端代码:

                                $.ajax({
                                    type: "POST",
                                    url: "http://*",
                                    data: {
                                        'vCode': vcode
                                    },
                                      dataType:'jsonp',
                                    jsonp:'jsoncallback',
                                    crossDomain: true,
                                    success: function(rs) {
                                        alert(rs.data);
                                    },

                                    error: function() {

                                    }

                                })

方法二:

采用后台允许相应请求头方式、实现跨域请求。缺点:需后台配置实现允许相应响应头,不灵活。

前端代码:

    $.ajax({
                    type: "POST",
                    url: "http://*",
                    data: {
                        'vCode': vcode
                    },
                    dataType: 'json',
                    xhrFields: {
                        withCredentials: true
                    },
                    crossDomain: true,
                    success: function(rs) {
                        alert(rs.data);
                    },

                    error: function() {

                    }

                })
            }

json 请求方式:

    $.ajax({
                        type: "POST",
                        url: base_url+"/cms/web/bespeak",
                        contentType: "application/json",
                        crossDomain: true,
                        data: JSON.stringify({
                            'verifyCode': vcode
                        }),
                        success: function(rs) {
                            console.log(rs);
                        }
                    });

服务器端设置:

前端方式一:

数据返回形式:jsoncallback(data)

例如:

jsoncallback({"data":"验证失败","errorCode":0,"errorMsg":"success"})

前端方式二:

前端提交数据方式 如是 content-type:application/json
服务器需要支持 options 请求方式,前端设置请求头发出请求,浏览器会发出预请求来进行证书校验。

options(仅需要设置响应头,设置状态码 200 返回即可)以及真正的请求方式 响应头设置:

Access-Control-Allow-Origin http://*
Access-Control-Allow-Methods GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Credentials true

原文出自:https://blog.csdn.net/u014692324/article/details/78782900

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    710 引用 • 1173 回帖 • 192 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 744 关注
  • 跨域
    18 引用 • 95 回帖
  • Cookie
    21 引用 • 63 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...