Javascript Chrome扩展背景和内容脚本发布消息

Javascript Chrome扩展背景和内容脚本发布消息,javascript,jquery,google-chrome-extension,http-post,content-script,Javascript,Jquery,Google Chrome Extension,Http Post,Content Script,我有一个内容脚本,其中包括jqueryui组件,我想用httppost将数据发送到我的服务器。然而,我逐渐意识到,你不能向https网站发送http post消息,反之亦然。如果我将我的信息发送到后台脚本并在那里发帖,我会有问题吗?如果站点是http或https,会有什么不同吗?如果有什么不同,我如何才能做到这一点?如果从后台脚本发送,则切换协议没有问题,但您必须声明对这些URL的权限: 查看更多信息,这是可以的,您可以在内容脚本以及背景脚本中使用http POST以及任何其他http方法(例如

我有一个内容脚本,其中包括jqueryui组件,我想用httppost将数据发送到我的服务器。然而,我逐渐意识到,你不能向https网站发送http post消息,反之亦然。如果我将我的信息发送到后台脚本并在那里发帖,我会有问题吗?如果站点是httphttps,会有什么不同吗?如果有什么不同,我如何才能做到这一点?

如果从后台脚本发送,则切换协议没有问题,但您必须声明对这些URL的权限:


查看更多信息,这是可以的,您可以在内容脚本以及背景脚本中使用http POST以及任何其他http方法(例如GET、PUT、PATCH)

但是,在这两种情况下,必须在扩展的权限中声明向其发送请求的URL。你在舱单上这样做。例如,如果要向发送http请求,则必须将该URL(或与该URL匹配的模式)添加到清单的
权限
数组中:

{
    ...
    "permissions": [
      "http://www.some-domain.com/*"
    ],
    "name": "Test",
    "manifest_version": 2,
    "version": "0.0.0"
}
您可以向URL权限模式添加通配符;因此,如果您想同时匹配https和http,可以执行类似于
*://www.some-domain.com/*
的操作

我应该警告您,如果您将内容脚本附加到作为https而不是http加载的页面,则可能不允许您发送不安全的http请求,因为Chrome阻止了混合内容,我认为这需要用户覆盖。因此,一个好的经验法则是:如果您将内容脚本附加到通过http加载的页面,那么使用http发送请求;如果要附加到通过https加载的页面,请使用https


最后一个提示:不要忘记在更改清单后重新加载扩展,否则权限更改将不会反映出来。要重新加载扩展,请转到
chrome://extensions
,找到您的分机,然后点击重新加载。

这不是同一个问题。我似乎无法将post消息发送到我的服务器,如果一个是http,另一个是https,无论您在清单中添加了什么。但你是对的,我可以从后台发送它们。我现在已经试过了,而且成功了!感谢感谢您提供了非常有用的信息,但这有点像是一种变通方法。我更喜欢将我的信息发送回后台,并以这种方式发送帖子请求,但无论如何,感谢您提供的信息和建议!这不是一个解决办法;这是唯一的办法。允许您向chrome扩展源之外的域发送http请求的唯一方法是在清单中声明URL匹配模式,而不管请求是来自背景页面/脚本还是内容脚本。