错误:参数 4 的值无效.属性“方法”:意外属性
Error: Invalid value for argument 4. Property 'method': Unexpected property
我正在尝试更改用户发出的请求的请求方法(发出POST请求(,但出现此错误:
Error in event handler for webRequest.onBeforeSendHeaders/1: Error: Invalid value for argument 4. Property 'method': Unexpected property.
我的代码是这样的:
chrome.webRequest.onBeforeSendHeaders.addListener(function(data) {
console.log(data);
return {method: "POST"};
}, {
urls: ["<all_urls>"]
}, ["blocking", "requestHeaders"]);
我错过了什么吗?我搜索了很多,但我找不到任何可以更改请求方法的内容webRequest
通过扩展 API 不会立即支持更改 HTTP 方法。有几种方法可以获得所需的结果。在下面的答案中,我只会解释如何对 sub_frame
和 main_frame
类型的请求执行此操作,因为这可能是您想要的(对于 image
或 stylesheet
等类型的 POST 实际上没有意义(。
您可以修改请求器,使其通过内容脚本启动 POST 请求而不是 GET 请求。 例如,通过定位<form>
并将action
设置为"POST"
。
一种通用的有效方法是拦截请求并重定向到您的扩展页面,该扩展页面又将表单提交到所需的目标。不要忘记将页面添加到 web_accessible_resources
.可以通过 URL(查询字符串或引用片段(将参数传递给框架,或者将参数存储在后台页的字典中,并使用扩展消息传递 API 进行通信。
示例(使用查询字符串传递 URL(:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var url = chrome.runtime.getURL('redirector.html') +
'?' + encodeURIComponent(details.url)
return {
redirectUrl: url
};
}, {
types: ['main_frame', 'sub_frame'],
urls: ['*://example.com/*']
}, ['blocking']);
redirector.html
(将此页面添加到web_accessible_resources
!
<form method="POST" id="form"></form>
<script src="redirector.js"></script>
redirector.js
可以包含(注意:参数的验证留给读者作为练习(:
var form = document.forms['form'];
// URL is passed via the parameters
// "chrome-extension://[extensionid]/redirector.html?http%3A%2F%2Fexample.com%2F
// ^
// becomes http://example.com
form.action = decodeURIComponent(location.search.slice(1));
// Example: Append extra form data
var input = document.createElement('input');
input.type = 'text'; // Default
input.value = 'extra data';
form.appendChild(input);
form.submit();
这是一个非常简单的例子。如果要将更多数据传递到页面,请选择适当的参数序列化(例如 JSON 或 ¶m=value
(。有关(动态生成的(表单的详细信息,请阅读文档:<form>
和 HTMLFormElement
。
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题