怎么给jquery跨域post请求添加头部信息?

跨域,服务器已开放请求接口,用$post可以成功,但是无法添加header信息,用$ajax的话会把post信息换成OPTIONS发送请求,data跟header都无法发送出去,不知道有什么好的办法可以解决~~

//        $.post(Common.postUrl + '/wechat/register',
//                JSON.stringify({
//                    phone: tel,
//                    publicId: getcookie().publicId,
//                    header: header,
//                    authCode: code,
//                    focusTime: Date.parse(new Date())
//                }), function (data) {
//                    data = JSON.parse(data);
//                    if (data.status == 200) {
//                        alertBottom('登录成功');
//                        setTimeout(function () {
//                            window.href = 'index.html';
//                        }, 2000)
//                    } else {
//                        alertBottom(returnMessage[data.status]);
//                    }
//                });
   $.ajax({
            type: "POST",
            url: Common.postUrl + '/wechat/register',
            data:JSON.stringify({
                phone: tel,
                publicId: getcookie().publicId,
                header: header,
                authCode: code,
                focusTime: Date.parse(new Date())
            }),
            contentType: "application/x-www-form-urlencoded",
            headers:{
                key:'Cookie'
            },
            processData: false,
            beforeSend: function (xhr) {
                xhr.setRequestHeader("key", "Cookie");
            },
            success: function (data) {
               
            }
        });
阅读 13.6k
5 个回答

用$ajax的话会把post信息换成OPTIONS发送请求,data跟header都无法发送出去。。。。。。。是因为你自定义了头部,所以自然会从简单请求变为预检请求(Option),这种只有服务端多做一次处理,可参考文章

 $.ajax({
    type: "POST",
    url: Common.postUrl + '/wechat/register?'+
    data:{
        phone: tel,
        publicId: getcookie().publicId,
        header: header,
        authCode: code,
        focusTime: Date.parse(new Date())
    },
    contentType: "application/x-www-form-urlencoded",
    headers:{
        key:'Cookie'
    },
    processData: false,
    beforeSend: function (xhr) {
        xhr.setRequestHeader("key", "Cookie");
    },
    success: function (data) {
       
    }
});

还没有找到原因,有没有大佬能够给点建议啊~~

新手上路,请多包涵

你好!我想问下,你那个ajax跨域请求是如何把请求头发过去的,在后台怎么设置的。谢谢

身边发生的那

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏