XMLHttpRequest不向跨域请求发送cookie

时间:2019-06-03 08:41:10

标签: cookies google-chrome-extension cors cross-domain django-cors-headers

请注意,我尝试了SO上列出的多种解决方案,但仍然失败。因此,发布问题作为不得已的方法。

我正在构建一个可在几个域上运行的chrome扩展程序。用户首先必须登录我的网站,这将在用户的浏览器上放置cookie。然后,该扩展程序将与我的服务器(通过跨站点域)以及用户cookie进行通信,以帮助我识别用户。

我曾尝试添加withCredentials: true,但是很遗憾。这是我的代码:-

var xhr = new XMLHttpRequest(async=true);
xhr.open('POST', CROSS_DOMAIN_URL, true);
xhr.withCredentials = true;
xhr.setRequestHeader('Content-type', 'application/json');
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 201) {
         // do something
    }
}
xhr.send(JSON.stringify({
    'data': 'abcd'
}));

还尝试将dataType设置为jsonp,但是请求被阻止。

我确实有一个需要cookieswebRequest权限的解决方案。我将拦截该请求,并将手动向其添加cookie。 但是,我不想使用额外的权限。

如何通过跨域请求发送cookie?

PS:我使用Django作为网络服务器和CORS库,该库在标头中添加了以下内容

响应标题

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: chrome-extension://jahbloglfdbckehlhangdfielgmppcab

请求标头

Accept: */*

随附的是请求标头的屏幕截图。

enter image description here

也尝试过获取,但结果相同。

fetch(CROSS_DOMAIN_URL, {
    credentials: 'include',
    mode: 'cors',
    async: false,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        'data': 'abcd'
    })
})
.then(function(data) {

})
.catch(function(error) {

})

0 个答案:

没有答案