既然你是在谈论一个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。 我说“应该”,因为我没有测试过这个解决方案。
的一些要点:
- 您需要的权限:
"webRequest"
,"webRequestBlocking"
和主机的权限(在这个例子中,"*://*.example.com/"
)
- 有,你不能拦截自己的同步请求一个警告,作为防止僵局的预防措施。只要你的AJAX是异步的,它应该没关系。
- 如果您需要阻止
Set-Cookie
到达Cookie存储的响应,您可以通过修改onHeadersReceived
中的响应标题来完成此操作。您可以使用请求ID来查找相应的响应。
来源
2015-04-30 10:21:43
Xan
** [This Link](http://stackoverflow.com/questions/3340797/can-an-ajax-response-set-a-cookie)**可能会有所帮助.. :) –
什么是你首先使用拦截请求? – Xan
@Xan,在Chrome开发人员工具中有一个'chrome.devtools.network。onRequestFinished'事件,当请求完成并触发请求的内容时触发。 –