1

我有一个内容脚本其中包括jquery ui组件,我想发送数据到我的服务器与http post。不过,我已经认识到,你不能发送http post消息到https网站,反之亦然。如果我将我的消息发送到后台脚本并从那里发布我有问题吗?如果网站是httphttps它会有所作为吗?如果它有所作为,我该如何做到这一点?Chrome扩展程序背景和内容脚本发布消息

回答

1

如果您从后台脚本发送没有与交换协议没有问题,但你不得不宣布准许这些URL:

看到更多at the google manifest documentationduplicated question

+0

这不是同一个问题。我似乎无法发送邮件到我的服务器,如果一个是http,一个是https,那么您在清单中添加的任何内容。但你是对的,我可以从后台发送它们。我现在已经尝试过,它工作!谢谢 – mert

1

是的,你可以使用HTTP POST,以及任何其他http方法(例如,GET,PUT,PATCH),在内容脚本中 - 以及背景脚本。

但是,在这两种情况下,您发送请求的URL必须在您的扩展的权限中声明。你在清单中这样做。例如,如果你想HTTP请求发送到http://www.some-domain.com,必须在该URL(或匹配的URL模式)添加到permissions阵列您的清单中:

{ 
    ... 
    "permissions": [ 
     "http://www.some-domain.com/*" 
    ], 
    "name": "Test", 
    "manifest_version": 2, 
    "version": "0.0.0" 
} 

您可以添加通配符您的网址许可模式;因此,如果您想要同时匹配https和http,则可以执行类似*://www.some-domain.com/*的操作。 See the official literature here

我应该警告您,如果您将内容脚本附加到以https而不是http加载的页面,由于Chrome阻止了混合内容,您可能不会发送不安全的http请求,我相信需要用户覆盖。所以一个好的经验法则是:如果您将内容脚本附加到通过http加载的页面,则使用http发送请求;如果您要附加通过https加载的网页,请使用https。

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

+0

感谢非常有用的信息,但它有点感觉像一个解决方法。我宁愿将我的消息发回到后台,并以这种方式发送帖子请求,不过谢谢你的信息和建议! – mert

+0

这不是一种解决方法;这是做到这一点的唯一方法。允许您将http请求发送到chrome扩展名外的域的唯一方法是在清单中声明URL匹配模式,而不管请求是源自背景页面/脚本还是内容脚本。 –

相关问题