我能夠通過HTTPWEBREQUEST從VB.NET代碼隱藏中成功使用datazen進行外部認證,但我不清楚如何將此與iframe或甚至div一起使用。我在想也許授權cookies/token不是跟隨iframe? datazen開始正確加載,但隨後它會重定向回登錄頁面,就好像它沒有被認證一樣。不知道如何做到這一點,這對我來說是非常新的,任何幫助將不勝感激!在具有外部認證的iframe中使用Datazen
網頁錯誤包括:
-Options URL發送@ jquery.min.js:19b.extend.ajax @ jquery.min.js:19Viewer.Controls.List.ajax @腳本網頁=名單:35Viewer.Controls.List.load @腳本頁面=列表:??35h.callback @腳本頁面=名單:35 VM11664有關:srcdoc:1周
的XMLHttpRequest無法加載http://datazenserver.com/viewer/jsondata。預檢的響應具有無效的HTTP狀態代碼405Scripts?page = list:35
load():未能加載JSON數據。 V ... rC ... s.List {version:「2.0」,description:「KPI & dashboard list loader & controller」,url:「/ viewer/jsondata」,index:「/ viewer /」,json:null ...}(anonymous函數)@腳本?page = list:35c @jquery.min.js:4p.fireWith @ jquery.min.js:4k @ jquery.min.js:19r @ jquery.min.js:19 腳本?page = list :35
GET http://datazenserver.com/viewer/login 403(禁止)(匿名函數)@腳本頁=名單:35 @ jquery.min.js:4p.fireWith @ jquery.min.js:4K @ jquery.min.js :19r @ jquery.min.js:19
' ''//////////////////////////////////
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("http://datazenserver.com/"), HttpWebRequest)
myHttpWebRequest.CookieContainer = New System.Net.CookieContainer()
Dim authInfo As String = Session("Email")
myHttpWebRequest.AllowAutoRedirect = False
myHttpWebRequest.Headers.Add("headerkey", authInfo)
myHttpWebRequest.Headers.Add("Access-Control-Allow-Origin", "*")
myHttpWebRequest.Headers.Add("Access-Control-Allow-Headers", "Accept, Content-Type, Origin")
myHttpWebRequest.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Response.AppendHeader("Access-Control-Allow-Origin", "*")
' Create a new 'HttpWebRequest' Object to the mentioned URL.
' Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
Dim streamResponse As Stream = myHttpWebResponse.GetResponseStream()
Dim streamRead As New StreamReader(streamResponse)
frame1.Page.Response.AppendHeader("Access-Control-Allow-Origin", "*")
frame1.Page.Response.AppendHeader("headerkey", authInfo)
frame1.Attributes("srcdoc") = "<head><base href='http://datazenserver.com/viewer/' target='_blank'/></head>" & streamRead.ReadToEnd()
是的,我能夠獲得並添加DATAZEN_AUTH_TOKEN cookie到我的請求/響應(我做了這篇文章後),我想我也在某個地方做了錯誤,但你說得對,它似乎在某個點上迷路了太。我可以看到網絡響應中的所有內容,就像我通過身份驗證一樣,但我不知道如何正確處理它。請原諒我的新手能力與這個網絡請求的東西。我也試着用ajax做這個客戶端,但是我永遠無法正確地通過這種方式進行身份驗證。 – Luke
@Luke我真的不記得'HttpWebRequest'中Cookie的默認行爲,但我可以想象它是否通過重定向支持它們,在這種情況下,這是有道理的。你的迴應將有一個完全認證的機構,但是你把它放在一個iframe中,而你的cookie當然不會隨着它傳遞下去。我真的不確定是否有可靠的方法來做到這一點。除非我想,如果您可以將所有內容放在同一個域中(包含子域),您可以設置一個cookie並將其用於您的代理,或者直接用於外部認證。這將工作。 –
@Luke我編輯了一下我的答案,以增加一個關於如何工作的理論。再次,我不知道CORS有多少,但這應該避免最令人頭痛的問題。至少這是一些東西。對於它的價值,我可以在一定程度上肯定地告訴你,從長遠來看,這會變得非常麻煩,除非你絕對需要它,否則你可能不應該繼續走下去。外部認證已被棄用,並且現在幾乎不受支持。我理解你的用例,我相信這應該起作用,但這些是我的警告語。 –