Chrome扩展程序-请求中未发送Cookie

3
我已经阅读了大量关于SO上的问题,尝试了多种方法但仍没有成功。我的问题很相似,但我发帖是因为我已经尝试了所有方法但仍未成功。
我想检查服务器是否维护了用户会话。我有一个Web服务,它基于接收到的cookies返回一个布尔值。
浏览器发送请求时会发送cookie(如果有的话),这是浏览器的职责。因此,当我通过chrome扩展请求时,理论上浏览器应该一起发送cookie。然而,实际上并没有。
以下是我的代码:-
content.js
fetch('https://zoffers.in/apis/shops/get_aff_url/', {
    credentials: 'include',
    mode: 'cors',
    async: false,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        name: 'Hubot',
        login: 'hubot',
    })
})
.then(function(data) {

})
.catch(function(error) {

})

Manifest.json

{
    "manifest_version": 2,
    "version": "0.1",
    "content_scripts": [{
        "matches": [
            "https://*/*/"
        ],
        "js": ["js/content.js"],
        "run_at": "document_start"
    }],
    "browser_action": {
        // "default_icon": "icon.png",
        "default_popup": "popup.html",
        "default_title": "Click here!"
    },
    "permissions": [
        "identity",
        "identity.email",
        "tabs",
        "notifications",
        "cookies",
        "https://zoffers.in/"
    ]
}

我做错了什么?有人可以帮忙解决一下吗?

更新

content.js

message = {
    'event_type': 'Event1',
}
chrome.runtime.sendMessage(message);

background.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){
        if(request.event_type === 'Event1'){
            chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
                fetch('https://zoffers.in/apis/shops/get_aff_url/', {
                    credentials: 'include',
                    mode: 'cors',
                    async: false,
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        name: 'Hubot',
                        login: 'hubot',
                    })
                })
                .then(function(data) {

                })
                .catch(function(error) {

                })
            }
        }
    }
);

已将background.js添加到manifest.json文件中。但仍未生效。

1
Chrome已经弃用了内容脚本中的跨域请求。请按照官方CORB说明文档在后台脚本中执行。 - wOxxOm
仍然没有帮助。即使将获取代码转移到 background.js,请求仍然没有 cookie 标头。 - Praful Bagai
请检查更新后的代码。 - Praful Bagai
我也尝试用另一个用户登录了,但还是没有成功。这是怎么回事? - Praful Bagai
2个回答

0

您可以使用标准的Cookies api并访问任何可用的URL的Cookie。


那么我该如何将cookie设置到Web请求中呢? - Praful Bagai
@PythonEnthusiast 这是另一个问题。顺便问一下,你试过使用“credentials:“include””吗?https://github.com/github/fetch/issues/452#issuecomment-397155739 - Jafar Akhondali
是的。检查了问题。已经尝试过 credentials:include。我还研究了发送 cookie 的方法,我们必须使用 webRequest API。感谢您的帮助。 - Praful Bagai
1
然而,我相信问题是其他方面的。它与跨域请求有关。我正在DomainB网站上向DomainA发出请求。这会阻止cookie自动发送。我正在尝试是否可以在不明确传递cookie的情况下自动发送它。我已经发现了xhr.withCredentials = true;,但它仍然无法工作。任何关于此的线索都将是有帮助的。谢谢。 - Praful Bagai
@PythonEnthusiast,你能解决这个问题吗? - Amit Sharma

0

你的回答可以通过提供解决方案示例以及其如何帮助OP来改进。 - Tyler2P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接