赞
踩
在 chrome 插件页面中调用 api 存在跨域问题(CORS Error)
接口调用失败:CORS Error
核心思路:在 service_worker.js 中发起接口调用。
通过 Chrome 插件的消息机制:chrome.runtime.sendMessage
将插件的请求转发中 service_worker.js 使用 fetch
调用,再将响应内容发送回插件。
插件:
export function externalService(message) {
return new Promise((resolve) => {
chrome.runtime.sendMessage(message, resolve);
});
}
service_worker:
chrome.runtime.onMessage.addListener(function (request,sender,sendResponse){ new Promise((resolve, reject) => { try { fetch(request.baseURL, { method: request.method, credentials: 'include', body: JSON.stringify(request.body), }).then((res) => { if (res) { return res.json(); } else { return {}; } }).then(data => { resolve(data); }).catch(err => { reject(err); }) } catch (err) { reject(err) } }).then(res => { sendResponse(res) }) return true; }
一定要在 manifest.json 开启 host_permissions
权限:
"host_permissions": ["*://*/*"]
https://developer.chrome.com/docs/extensions/reference/api/permissions?hl=zh-cn
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。