我正在开发Chrome扩展程序,允许用户记录网站的所有HTTP请求,修改请求的部分然后重新发送。
我希望使用jQuery's ajax method来构造和发送修改后的请求。我已经能够构建请求的其他部分,但据我所知,没有办法在请求中包含cookie值。
为了清楚 - 我不是想在浏览器上创建一个cookie,我正在尝试使用jQuery的ajax方法修改将作为HTTP请求的一部分发送的cookie值。
这可以用jQuery的ajax完成吗?如果没有,无论如何在javascript中执行此操作?
答案 0 :(得分:5)
由于您正在谈论Chrome扩展程序,因此您可以使用webRequest
API来拦截和修改您的请求。
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
/* Identify somehow that it's a request initiated by you */
for (var i = 0; i < details.requestHeaders.length; i++) {
if (details.requestHeaders[i].name === 'Cookie') {
/* Do something with it */
break;
}
}
/* Add the Cookie header if it was not found */
return {requestHeaders: details.requestHeaders};
},
{urls: ["*://*.example.com/*"]},
["blocking", "requestHeaders"]
);
这样您就可以修改cookie而无需实际修改浏览器的cookie存储。 我说&#34;应该&#34;因为我没有测试过这个解决方案。
一些要点:
"webRequest"
,"webRequestBlocking"
和主机权限(对于此示例,"*://*.example.com/"
)Set-Cookie
到达Cookie存储区,您可以通过修改onHeadersReceived
中的响应标头来实现。您可以使用请求ID查找相应的响应。