2014-02-17 97 views
0

所以我正在爲cURL編寫一個腳本,腳本以各種方式模擬我的瀏覽器。但我仍然得到一個會話是無效的錯誤。我一直在尋找通過Chrome控制檯,看到兩個錯誤說cURL繞過同源策略

「的SecurityError:阻止原產框架」 http://localhost「訪問與原點的框架」 http://edugen.wileyplus.com「協議,域和端口必須匹配」

「未捕獲的SecurityError:封鎖與原點的框架」,「從訪問與原點的框架」 http://localhosthttp://edugen.wileyplus.com「協議,域和端口必須匹配」

我擡頭一看這個錯誤,我得到了它是如何有一些資料用鉻不再允許框架或東西,但我懷疑這是因爲控制檯引用這兩行代碼。

var win = self; 
    while (typeof(win.isLTIRoot) == 'undefined' && win.parent != null && win.parent != self && win.parent != win) 

而這一次

function setSTNOnLoadListener(wnd) { 
    setSTNFrameOnLoadListener(wnd, wnd.document.getElementsByTagName('frame')); 
    setSTNFrameOnLoadListener(wnd, wnd.document.getElementsByTagName('iframe')); 
} 

所以我應該和Curl以及究竟是什麼問題,用什麼策略。

編輯:更多細節和捲曲代碼

所以我試圖登錄到網站,並獲得了大型機。整個過程非常繁瑣,因爲我必須遵循9個位置標題,一切都很順利,但是當我最終到達網頁時,我收到錯誤「您的會話無效」。

這裏是大型機最後一頁的捲曲代碼。

$ch = curl_init(); 

// Set some options - we are passing in a useragent too here 
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_FOLLOWLOCATION => FALSE, // Setting cURL to follow 'location' HTTP headers 
    CURLOPT_URL => $url9, 
    CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0", 
    CURLOPT_STDERR => $verbose = fopen('php://temp', 'rw+'), 
    CURLOPT_VERBOSE => TRUE, 
    CURLOPT_HTTPHEADER => array(
           'Host: edugen.wileyplus.com', 
           'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
           'Accept-Language: en-US,en;q=0.5' 
          ), 
    CURLOPT_CAINFO => dirname(__FILE__)."\cacert.pem", 
    CURLOPT_HEADER => TRUE, 
    CURLOPT_COOKIEJAR => $ckfile, 
    CURLOPT_COOKIEFILE => $ckfile 
)); 
if(! $tenth_page = curl_exec($ch)) 
      { 
       trigger_error(curl_error($ch)); 
      } 
$urlEndpoint = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
echo "Verbose information:\n<pre>", !rewind($verbose), htmlspecialchars(stream_get_contents($verbose)), "</pre>\n"; 

curl_close($ch); 

$tenth_page = str_replace("src=\"","src=\"http://edugen.wileyplus.com",$tenth_page); 

echo $tenth_page; 
+1

js窗口安全性錯誤與curl有什麼關係? – dandavis

+0

curl「iFrame」是本地主機,網站「iFrame」是wileyplus。我把iFrame放在引號中,因爲我還不確定它是什麼。 – grasshopper

+0

向我們展示了捲曲代碼,並解釋了你想要做的更好。 – dandavis

回答

0

我期望他們已經部署了一些安全措施,以防止他們的頁面被加載到不同域的iFrame中。

開發時的另一個常見錯誤是當你的開發站點被引用爲localhost時 - 如果你正在進行ajax調用,那麼你應該確保你的開發站點別名與你正在調用的站點相同,如果他們有跨產地安全設置。

+0

是的我的開發網站被稱爲本地主機,iFrame有沒有一種方法來欺騙它,認爲iFrame是一樣的? – grasshopper

+0

有時你可以通過使其成爲你正在訪問的主機的子域來逃脫,例如local.other.hostname。 - 您需要更正您的DNS或編輯您的主機文件,以便它解析爲127.0.0.1 – BillyBigPotatoes

+0

哇,更改主機?有沒有http頭或捲曲功能來改變它?什麼是i框架? – grasshopper