2016-08-15 33 views
0

我嘗試使用不同的授權網站處理重新認證,同時在我的主頁的單頁應用程序(SPA)中處理重新認證。這兩個網站都位於客戶網站的內部。使用CORS處理另一個站點上的重新認證

我不能使用標準的「重定向」方法,因爲我將失去我的SPA JavaScript上下文。

我已經調查過並在Auth網站上安裝了CORS,因此它現在返回Access-Control-Allow-Origin: https://www.mywebsite.com。當我嘗試將Auth頁面加載到JQuery UI對話框時,它會失敗,因爲腳本都嘗試在Home網站的上下文中加載。


從我的網站https://www.mywebsite.com/static/
我加載https://www.auth.com/login.html

當加載到它會嘗試加載它的腳本,​​
而不是
https://www.auth.com/scripts/authscript.js

我也試圖通過改變src標籤加載驗證頁面到iframe一個jQuery UI的對話框,但它只是重新加載頁。

有沒有辦法改變CORS網頁上下文中的源目錄我試圖展示?

+0

您是否爲腳本使用了相對路徑? –

+0

在驗證頁面 - 他們不是我的腳本。是的,他們是相對的路徑。我希望有一種方法可以改變「起源」,因爲這正是我認爲我使用CORS所做的事情。 – u02sgb

+0

您應該在新窗口中打開它。 –

回答

1

所以我無法將頁面正確加載到標準的jQuery模式對話框中,並且我無法控制連接到的Auth頁面。爲了解決這個問題,我調查了iframe所遇到的問題,並使用HTML5功能​​來修復它。

Auth頁面正在使用「breakout」腳本來重新加載頁面,如果它被加載到iframe中,並且顯然這打破了我的SPA上下文。 HTML5允許您限制iframe的內容。

<iframe src="" id="my_auth" sandbox="allow-forms allow-scripts allow-same-origin"></iframe>

  • allow-forms允許formsubmit
  • allow-scripts讓它運行JavaScript
  • allow-same-origin讓它考慮起源一樣的腳本(即驗證的網站),這是必要的,以使餅乾
  • 值得注意的是,我不包括allow-top-navigation這是什麼是允許重新加載的頁面和損失我的JavaScript上下文

Voilà,auth頁面顯示在一個jQuery模式對話框(包含iframe)中,不需要彈出另一個窗口。

CORS是允許重定向到Auth網站(在JavaScript涉及之前發生在瀏覽器中)的必要條件。您也可以捕獲「訪問控制允許來源」異常。

希望這對某人有用。

相關問題