解决ajax发送请求无法设置cookie问题

解决ajax发送请求无法设置cookie问题,第1张

解决ajax发送请求无法设置cookie问题

前端jquery

let url = 'http://www.baidu.com'

let url1 = 'http://www.baidu.com'

let username = 'abc'

let password = 'abc'

$.ajax({

          url: url,

          type: 'post',

         哪简 data: {

            mobile: username,

            mobilepwd: password,

          },

          xhrFields: {

            withCredentials: true

          },

          dataType: 'json',

          success: function (res) {

            console.log(res)

            if (res.status == 1) {

              window.location.href = url

            }

          }

        })

前端vue

var $this = this

let url = 'http://www.baidu.com'

let data = {

    mobile:123,

    mobilepwd:123,

}

$this.$axios.defaults.withCredentials = true

$this.$axios.post(url,data)

  .then((res) =>{

    console.log(res.data)

  })

php后台设置

header('Access-Control-Allow-Origin:'.$_SERVER['HTTP_ORIGIN'])

header("Access-Control-Allow-Credentials: true")

解释两个header的作用

我们在客户端悔旁设置了withCredentials=true 参数,对应李前裤着,服务器端要通过在响应 header 中设置Access-Control-Allow-Credentials = true来运行客户端携带证书式的访问。通过对Credentials参数的设置,就可以保持跨域Ajax时传递的Cookie。

发送ajax请求,我们发现还会出现一个错误,提示我们Access-Control-Allow-Origin不能用*通配符。原因是:当服务器端Access-Control-Allow-Credentials = true时,参数Access-Control-Allow-Origin的值不能为'*'。

我们重新设置Access-Control-Allow-Origin的值,当服务器端接收到请求后,在返回响应时,把请求的域Origin填写到响应的Header信息里(即谁访问我,我允许谁)

用jquery编写陆纤,它的ajax函数中,有一个beforeSend方法,这个方法接受一个参数,就代表了发起异步请求的答散XMLHttpRequest对象,我们可以用该对象的setRequestHeader方法实现我们的目的

上一个例子,

<script type="text/javascript" language="javascript">

$(function() {

$("早举仿#test").click(function() {

$.ajax({

type: "GET",

url: "default.aspx",

beforeSend: function(request) {

request.setRequestHeader("Test", "hello world")

},

success: function(result) {

alert(result)

}

})

})

})

</script>

在用扮盯JavaScript发送ajax请求时增加cookie的方法如下:

$.ajax( {

type : "中扒POST",

url : URL,

data: SOAP_INBOX_MAIL_QUERY,

dataType : "xml",

async: false,

beforeSend : function(xhr) {

var cookie = credentials["COOKIE"]//此厅培和处设置cookie

console.info( "adding cookie: "+ cookie )

xhr.setRequestHeader('Cookie', cookie)

},

success : function(data, textStatus, xmLHttpRequest){

},

error : function(xhr, ajaxOptions, thrownError) {

credentials = null

}

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8241204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存