我們在網上服務器場中有一個站點。該農場位於處理加密的SSL Accellerator之後。這意味着我們的IIS服務器將所有傳入連接視爲http,即使用戶都通過https連接到該站點。如何強制ScriptManager通過SSL提供CDN腳本
我們開始使用ScriptManager的EnableCDN = true屬性。在沒有SSL Accellerator的開發環境中,使用https呈現CDN上js文件的引用,但在生產環境中,它們通過http不安全地呈現,導致js被阻止顯示「僅顯示安全內容「錯誤。
手動更新scriptmanager中的所有腳本引用或通過模塊重寫HTML出路的方法不足,有誰知道強制scriptmanager通過https呈現其引用的方法嗎?
編輯:
做一些反射經審查,我不相信這是可能的。我已經將下面的黑客入侵了,然而這顯然是脆弱的,因爲它涉及訪問私人領域。如果任何人都能看到更好的方式,我很樂意聽到它。
var secureConnectionField = ScriptManager.GetType().GetField("_isSecureConnection", BindingFlags.Instance | BindingFlags.NonPublic);
if (secureConnectionField != null)
secureConnectionField.SetValue(ScriptManager, true);
我還沒有嘗試過爲你描述的情況,但也有在HTML/JS的幾個地方,你可以省略協議,瀏覽器將使用相同的協議請求URL爲包含頁面。例如,「//cdn.mydomain.com/myfile.js」 – RickNZ
感謝您的提示,但在這種情況下,我不控制呈現的url - 它在框架dll中註冊。我不相信在渲染CDN引用時有一段時間告訴腳本管理器省略協議。 –
ScriptManager是一個控件,因此您應該能夠構建一個將覆蓋路徑生成邏輯的控件適配器,或者可以構建一個從原始繼承的新控件,並使用標記映射在您的應用程序中動態替換它。 – RickNZ