簡體   English   中英

Google Chrome瀏覽器,同源策略殺死Tampermonkey腳本

[英]Google Chrome, Same-Origin Policy killing Tampermonkey script

我自己編寫了一個腳本,當我訪問它時,該腳本使用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。

Tampermonkey Beta將其GM_xmlHttpRequest為獨立於頁面的CSP。
不幸的是,它無法解決jQuery AJAX請求,因為它不知道將要聯系哪些網站。

如果您要訪問的頁面是Facebook ,則CSP僅發送給Chrome 21-23,而不發送給 Chrome24。因此,您可以使用Tampermonkey的@user-agent標簽模擬Chrome 24。

在本地服務器上,該whatever.php你發送的數據,建立CORS (即發送頭。 Access-Control-Allow-Origin: * )。

您不需要上面的任何東西。 您在ajax調用中要做的就是添加

script.php?callback =?&your_parametars_here

並且在php文件中,您只需要在檢索數據時添加此內容即可:

echo $_GET['callback'].$your_data_here

就這樣!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM