close

這幾天都在搞模擬登入 wordpress 的部份,發現一件奇妙而麻煩的事:以 php 發個模擬的 post 給 wordpress 登入頁面,是不會被吃的。搞半天發現沒用後,最後還是決定在平台登入時另外跳出一個視窗再發出 post 給 wp-login.php:

[平台] -post-> [跳出視窗] -post-> [wp-login]

流程上是這樣吧,密碼的部份則是另外處理了。

不過要怎麼用 post 的方式傳參數到 window.open 出來的新視窗?我是參考 [這篇] 來的,需注意 script 區間內記得以註解註起來:


<script>

<!--

function ......

...

-->

</script>


測試發現如果沒有這樣註解起來的話,javascript 內的字串若含有 html 的 tag,則那些 tag 會被「誤會」成為 html 中的一部份,反正會出問題就是了。

上面那篇的方法大略是開新視窗出來,再對新開出來的視窗利用 document.write 去寫入一個 method 為 post 的 form,最後利用 javascript 主動 submit 出去。

利用這方法,chrome、firefox 都成功的同步登入了,不過 IE 卻失敗了,在 document.write 時 throw 了個 exception: 存取被拒。

為什麼會被拒?其實是因為我們家的平台還在開發階段啦…… 因此在平台那邊,網址是用域名;但 wordpress 這邊因為比較早弄,當時又還沒有去申請域名來,所以拿 ip 當網址,所以問題就是從這裡生出來的:javascript 動作前會先檢查開出來的新網頁域名跟原本的網頁域名有沒有一樣,如果不一樣,則會拒絕存取……

在這裡,雖然平台跟wordpress是在同一台機器上,也都是走 80 port 家的路,不過因為以域名當網址跟以ip當網址是會被當成兩個不同域名的關係,所以出了這個問題。雖然想要把wordpress的網址改一改,不過改了之後資料庫就是讀不到,上網找了找方法照做,結果依然一樣,幸好 wordpress 上的文章還沒有太多,所以決定再重架一個以域名為網址的出來啦 :S 方才以測試的 wordpress 進行實驗, IE 終於也就乖乖就範了。

一堆有的沒的瀏覽器真的是讓寫網頁、排版的人吃了不少苦頭喔……

arrow
arrow
    全站熱搜

    plane0747 發表在 痞客邦 留言(0) 人氣()