我有两个页面,一个在另一个页面的iframe中运行:test.php在check.php中运行。 Test.php用作代理以避免交叉起源。 iframe可以工作并提供正确的值。但是当我尝试从父页面中的div id获取值时,我得到了这样的响应: 未捕获的SecurityError:阻止了一个包含起源的框架" http://localhost"从访问带有起源的框架" http://www.allow-any-origin.appspot.com"。协议,域和端口必须匹配。
这是我的代码:
check.php
<iframe id="vd" src="http://localhost/vd/test.php/test.php" width="720"
height="300" frameborder="0" scrolling="no" allowtransparency="true">
</iframe>
<form>
<input id="test" type="button" value="Submit">
</form>
<script type="text/javascript">
jQuery('#test').click(function() {
var mb =
document.getElementById('vd').contentWindow.document.getElementById
('#saldo_result');
});
</script>
test.php的
<form action="http://www.allow-any-
origin.appspot.com/http://vend.giftcardservices.nl/saldo/check?
show_form=0&card_id=3005&card_id=&ajax=1" method="GET">
<input type="text" name="card_id" value="3005">
<input type="text" name="card_id" value="">
<br>
<input type="submit" value="Submit">
我认为这条路径是让浏览器接受这种方式。谁能看到我哪里错了?
答案 0 :(得分:2)
JavaScript不会进入框架...... JS的标准设置得非常高。这样我不只是将别人的页面作为iFrame提供,并使用我的JavaScript收集登录详细信息等等。
答案 1 :(得分:0)
我做了类似于从php发布的内容。
客户&lt; - &gt; yourPostScript.php&lt; - &gt;外部网页。
将帖子数据发布到yourPostScript.php,发布到外部allow-any-origin.appspot.com,您可以在yourPostScript.php中获得响应,然后回复它。
抱歉,我希望这不是非法......
- 编辑 -
test.php代码:
<form action="yourPostScript.php" method="GET">
<input type="text" name="card_id" value="3005">
<input type="text" name="card_id" value="">
<br>
<input type="submit" value="Submit">
yourPostScript.php代码:(只是一个应该用于演示的代码片段)
<?php
/* validating method and fields i think is enough for ignoring images and others..*/
if($_SERVER['REQUEST_METHOD']!='POST') die;
if(!$_POST['card_id']) die;
$url = 'http://vend.giftcardservices.nl/saldo/check?
show_form=0&card_id=3005&card_id=&ajax=1';
$data = array('card_id' => $_POST['card_id'], 'other_field' => $_POST['other_field']);
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
echo $result = file_get_contents($url, false, $context); ?>