2017-03-10 56 views
0

我開發了一個內部Google Chrome瀏覽器插件,它將提取頁面的HTML並通過表單發佈將其提交到服務器端頁面。取消插件表單發佈

從最新的Chrome版本(56.0.2924.87)開始,插件停止運行。通過Google開發人員工具查看網絡信息時(右鍵單擊 - >查看彈出窗口)。我看到這個事件被取消了。

Network Data

通過谷歌搜索我能找到谷歌事件日誌。雖然我無法完全理解的信息,我看到下面的數據 Event Log Data

有一兩件事我注意到的是,它說:「MAIN_FRAME_DEPRECATED」中的「load_flags」部分。我無法在Google上找到關於此的任何信息。

這是提交表單的插件的代碼。

d = document; 
    var f = d.createElement('form'); 
    f.action = 'https://***.com/index.cfm?***'; 
    f.method = 'post'; 
    var i = d.createElement('input'); 
    i.type = 'hidden'; 
    i.name = 'Filecontent'; 
    i.value = request.source; 
    f.appendChild(i); 
    d.body.appendChild(f); 
    f.submit(); 

Google是否有任何理由取消表單文章?我最初通過服務器端頁面進行了一些調試,我可以確認數據正在提交。

+0

從Chrome 56開始,擴展進程被隔離。請查看問題是否在Chrome 59 canary中修復。或切換到XHR發佈方法。 – wOxxOm

回答

0

感謝wOxxOm我找到了正確的答案。我將上面的表單轉換爲XMLhttprequest。以下具有相同的功能,但通過同步HTTP請求。

var xmlhttp = new XMLHttpRequest(); 
var url ="https://***/index.cfm?***"; 
var params='Filecontent='+encodeURIComponent(request.source); 
xmlhttp.open("POST",url,false); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlhttp.send(params); 
d = document; 
d.body.innerHTML = xmlhttp.responseText; 

,我已經切換到該代碼迄今爲止發現的唯一要注意的是,所有的URL的以下網頁上的必須是絕對的。任何相關鏈接都不會運行corect。這也適用於使用//而不是https://http://的鏈接。

+0

要使相對鏈接正常工作,請在href:'d.head.appendChild(d.createElement('base'))。href = url;'手動添加新文檔中的BASE元素和遠程頁面的實際URL。 – wOxxOm