我如何从 firefox 插件中的表单 post 访问原始数据响应?
How do i access raw data response from a form post in a firefox addon?
我正在尝试构建一个 firefox 插件,用户可以在其中填写表单并将其提交到服务器。我想知道如何访问从服务器返回的响应。在此示例中,响应为 ["SUCCESS"、"createAccount"]
我在“原始数据”选项卡中单击“提交”后出现的这个小弹出窗口中看到了数据。 (见图)。
我只是不知道如何从我的代码中访问它。这看起来应该很简单,但我想不通。
我已尝试覆盖 onsubmit 和 onclick methods/listeners 以通过 ajax/XMLHttpRequest 路由它们,但我收到内容安全错误(内容安全策略:页面设置被阻止在自身加载资源(“script-src”)。来源:BUTTON 元素上的 onclick 属性。)
我看过其他 SO 帖子,none 其中专门针对插件中表单的回复。
感谢任何帮助。
答案是使用webRequests.filterResponseData.
代码是这样的:
var rawdata;
var listener = function(result){
let filter = chrome.webRequest.filterResponseData(result.requestId); //https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/filterResponseData
filter.ondata = event => {
self.data = {
data: Array.apply(null, new Uint8Array(event.data)),
contentType: result.type
};
rawdata = arrayBufferToData.toJSON(event.data);
}
filter.onstop = event => {
filter.disconnect();
}
}
browser.webRequest.onHeadersReceived.addListener(listener, {urls: ["<all_urls>"]},["blocking"]);
原始数据将具有正确的值。
感谢 icecub 指出正确的方法。
arrayBufferToData 来自 here
不幸的是,这仅适用于 firefox,不适用于 chrome。
我正在尝试构建一个 firefox 插件,用户可以在其中填写表单并将其提交到服务器。我想知道如何访问从服务器返回的响应。在此示例中,响应为 ["SUCCESS"、"createAccount"]
我在“原始数据”选项卡中单击“提交”后出现的这个小弹出窗口中看到了数据。 (见图)。
我只是不知道如何从我的代码中访问它。这看起来应该很简单,但我想不通。
我已尝试覆盖 onsubmit 和 onclick methods/listeners 以通过 ajax/XMLHttpRequest 路由它们,但我收到内容安全错误(内容安全策略:页面设置被阻止在自身加载资源(“script-src”)。来源:BUTTON 元素上的 onclick 属性。)
我看过其他 SO 帖子,none 其中专门针对插件中表单的回复。
感谢任何帮助。
答案是使用webRequests.filterResponseData.
代码是这样的:
var rawdata;
var listener = function(result){
let filter = chrome.webRequest.filterResponseData(result.requestId); //https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/filterResponseData
filter.ondata = event => {
self.data = {
data: Array.apply(null, new Uint8Array(event.data)),
contentType: result.type
};
rawdata = arrayBufferToData.toJSON(event.data);
}
filter.onstop = event => {
filter.disconnect();
}
}
browser.webRequest.onHeadersReceived.addListener(listener, {urls: ["<all_urls>"]},["blocking"]);
原始数据将具有正确的值。 感谢 icecub 指出正确的方法。
arrayBufferToData 来自 here
不幸的是,这仅适用于 firefox,不适用于 chrome。