2

我自己编写了一个脚本,当我访问它时,它使用 jQuery Ajax 函数从网页记录一些数据。它需要一些信息并将其发送到我的本地 Apache 主机以保存在文本文件中。

它工作了几个月,但我现在收到与此同源策略相关的错误(我知道它是如何工作的及其用途),并且浏览器现在正在结束显示此消息的脚本执行:

The page at https://www.website.com/ displayed insecure content from
http://127.0.0.1:8081/whatever.php

紧随其后的是:

Refused to connect to connect 'http://127.0.0.1:8081/whatever.php?arguments=1' because it 
violates the following Content Security Policy directive: "connect-src
https://www.website.com/* https://*.website.com/
https://*.website.net xhr: error: SECURITY_ERR: DOM Exception 18 

最后一个域在错误消息中显示为红色。一个奇怪的细节是,在Tampermonkey上的 JavaScript 代码中,我有@includes这些域中的一个,但没有红色标记的域。我已经添加并测试了它,但是没有用。

我在 Google 上找到的每个讨论都告诉我如何禁用此策略,但如果您正在开发扩展程序,那不是我的情况。

这段代码只会在我的机器上运行,我无意以任何方式分发它,因此任何解决方案都会受到赞赏,即使解决方案是直接更改浏览器配置。

如果这有用,我正在使用 Windows 7。

4

3 回答 3

6

Tampermonkey Beta 将其修复GM_xmlHttpRequest为独立于页面的 CSP。
不幸的是,它无法修复 jQuery AJAX 请求,因为它不知道要联系哪些站点。

如果您联系的页面是Facebook,则CSP 仅发送到 Chrome 21-23,而不是 Chrome 24。因此您可以使用Tampermonkey 的@user-agent标签来模拟 Chrome 24。

于 2012-12-12T17:28:56.660 回答
2

在您的本地服务器上,whatever.php您将数据发送到,设置CORS(即发送标头Access-Control-Allow-Origin: *)。

于 2012-11-21T01:31:28.030 回答
1

你不需要来自上面的任何东西。您在 ajax 调用中所要做的就是添加

script.php?callback=?&your_parametars_here

在 php 文件中你只需要在检索数据时添加这个:

echo $_GET['callback'].$your_data_here

就这样!

于 2012-11-21T02:24:48.853 回答