[英]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.