我有一个内容脚本其中包括jquery ui组件,我想发送数据到我的服务器与http post。不过,我已经认识到,你不能发送http post消息到https网站,反之亦然。如果我将我的消息发送到后台脚本并从那里发布我有问题吗?如果网站是http或https它会有所作为吗?如果它有所作为,我该如何做到这一点?Chrome扩展程序背景和内容脚本发布消息
回答
如果您从后台脚本发送没有与交换协议没有问题,但你不得不宣布准许这些URL:
看到更多at the google manifest documentation这duplicated question
是的,你可以使用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
,找到您的分机,然后点击重新加载。
感谢非常有用的信息,但它有点感觉像一个解决方法。我宁愿将我的消息发回到后台,并以这种方式发送帖子请求,不过谢谢你的信息和建议! – mert
这不是一种解决方法;这是做到这一点的唯一方法。允许您将http请求发送到chrome扩展名外的域的唯一方法是在清单中声明URL匹配模式,而不管请求是源自背景页面/脚本还是内容脚本。 –
- 1. 消息Chrome扩展程序和内容之间传递脚本
- 2. chrome消息从背景到内容脚本再到背景
- 3. 发送消息到Chrome扩展中的内容脚本
- 4. 背景内容脚本消息:消息内容脚本之前发送准备
- 5. Chrome扩展程序:如何将消息从背景发送到背景?
- 6. Chrome扩展内容脚本
- 7. Chrome扩展sendMessage从内容脚本错误到背景html
- 8. 内容脚本中的Chrome扩展程序storage.sync.set引发异常
- 9. 从内容脚本触发Chrome扩展程序通知
- 10. Chrome扩展程序 - 消息从弹出窗口传递到内容脚本
- 11. Chrome扩展程序,内容脚本和XSS攻击
- 12. Chrome扩展程序:内容脚本和background.html之间的通信
- 13. Chrome扩展程序,内容脚本的程序化注入
- 14. Chrome扩展的背景消息监听器触发了两次
- 15. 带有CSS和背景图片的Firefox扩展内容脚本
- 16. Chrome扩展 - 从内容脚本发送消息到后台页面并返回到内容脚本?
- 17. Chrome扩展:将DOM信息传递到背景页面/脚本
- 18. Chrome扩展程序背景页面
- 19. 铬扩展从内容脚本发送消息到
- 20. Chrome扩展中的页面和内容脚本之间的消息传递?
- 21. 内容脚本没有回应内容脚本的Chrome扩展
- 22. Chrome扩展内容脚本中的JQueryUI
- 23. Chrome扩展(内容脚本)缓存CSS
- 24. Chrome扩展引用/从内容脚本
- 25. 停止内容脚本在Chrome扩展
- 26. Chrome扩展 - 内容脚本点播
- 27. 在内容脚本和背景页面之间传递消息
- 28. 将内容脚本中的消息中的数组传递给Google Chrome扩展中的背景页
- 29. Chrome扩展代码和内容脚本vs注入脚本
- 30. Chrome扩展:内容脚本和网页的脚本
这不是同一个问题。我似乎无法发送邮件到我的服务器,如果一个是http,一个是https,那么您在清单中添加的任何内容。但你是对的,我可以从后台发送它们。我现在已经尝试过,它工作!谢谢 – mert