前端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
}
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)