1

我正在尝试使用以下代码修改 Chrome 扩展中的响应标头:

var modifyResponse = function(details) {
    var responseHeaders = [];

    responseHeaders.push({name: "Access-Control-Allow-Credentials", value: "true"});
    responseHeaders.push({name: "Access-Control-Allow-Origin", value: "*"});
    responseHeaders.push({name: "Access-Control-Allow-Methods", value: "OPTIONS, GET, POST"});
    responseHeaders.push({name: "Access-Control-Allow-Headers", value: "Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"});

    details.responseHeaders = details.responseHeaders.concat(responseHeaders);
    return {responseHeaders: details.responseHeaders};
};

chrome.webRequest.onHeadersReceived.addListener(modifyResponse, {urls: ["<all_urls>"]}, ["responseHeaders", "blocking"]);

在我的manifest.json文件中,我有:

"permissions": [
    "webRequest",
    "webRequestBlocking",
    "<all_urls>"
],

但是,在 Chrome 的检查器中检查响应标头时,这些标头不会显示。我可以确认modifyReponse正在调用该方法,但无法确认标题是否显示。我是否缺少权限,或者我的代码是否错误,或者这是扩展的限制?

更新: 通过运行测试 AJAX 调用http://api.jquery.com/

$.get("http://api.jquery.com/", {}, function(data, status, jqXHR) { console.log(jqXHR.getAllResponseHeaders()); });

我得到了正确的响应标头,这表明标头已插入,但是它们仍然没有显示在请求检查器中。

4

0 回答 0