所以我正在为cURL编写脚本,脚本以各种方式模拟我的浏览器。但我仍然得到一个会话无效的错误。我正在浏览chrome控制台并看到两个错误
" SecurityError:阻止了一个包含起源的框架" http://localhost
"从访问带有起源的框架" http://edugen.wileyplus.com"。协议,域和端口必须匹配"
" Uncaught SecurityError:阻止了一个包含起源的框架" http://edugen.wileyplus.com"从访问带有起源的框架" http://localhost
"。协议,域和端口必须匹配"
我查了一下这个错误,我得到了一些关于如何处理chrome不再允许框架或其他东西的信息,但我怀疑它是因为控制台引用了这两行代码。
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;
答案 0 :(得分:0)
我希望他们已经部署了一些安全措施,以防止他们的页面在来自不同域的iFrame中加载。
开发时的另一个常见错误是当您的开发站点被引用为localhost时 - 如果您正在进行ajax调用,那么您应该确保将您的开发站点别名为与您呼叫的站点相同的域,如果它们有任何交叉原产地安全集。