跨站点访问对象(解决问题后另给1000分!)

gale 2003-07-11 03:29:21
我在网页A.html中打开新窗口显示另一站点的页面b.html,A中的脚本如何取得B中某个hidden字段的值或者B的location

a.html和b.html分别存储在不同的站点上。

下面是A.html代码
<html>
<script>
var win;
function doOpen(){
Url1='http://yyy.xxx.zzz/b.html';
win = window.open();
win.location = Url1;
}
function disp()
{
alert(win.forms[0].sid);
}
</script>
<body>
<a href ="javascript:doOpen()">link</a>
<a href = "javascript:disp()">action</a>
</body>
</html>

下面是b.html代码节选
<html>
<body>
<form>
<input type=hidden name=sid value=YhUUoOu1>
</form>
</body>
</html>

急啊,大家给支个招吧
...全文
57 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
月光易水 2003-07-11
  • 打赏
  • 举报
回复
注:上面程序本地运行可以,通过IIS解释运行,需要客户端IE设置允许“通过域访问数据资源”
浏览器默认不允许垮域访问
IE ==> internet选项 ==> 安全设置 ==> 自定义级别 ==> 启用"通过域访问数据资源"

通过IIS解释运行:
可以改变逻辑,由A改变为B:
A. 客户端 ==> 外部数据源(URL) ==> 客户端得到返回数据
==>
B. 客户端 ==> 服务器端(获得URL) ==> 外部数据源(URL) ==> 服务器端得到返回数据,发送数据到客户端 ==> 客户端得到返回数据

参考
http://expert.csdn.net/Expert/topic/1959/1959431.xml?temp=.8885004


:_)
月光易水 2003-07-11
  • 打赏
  • 举报
回复
一种变通的方式:
a. 使用xmlhttp方法获得另一站点的页面内容
b. 将内容写入本页面中一个隐藏的iframe
c. 从iframe读取想要得内容

try:

<FORM METHOD=POST ACTION="***" name="moonpiazza">
<INPUT TYPE="text" name='sURL' value="http://www1.baidu.com/baidu?word=xmlseltree" size='80'>
<INPUT TYPE="button" value="读取数据" onclick="GetData()">
</FORM>
<div id='oDiv'></div>
<iframe name='ExternalData' src='about;blank' height='0' width='0'></iframe>

<SCRIPT LANGUAGE="vbScript">
Function GetData()
Dim sURL, sHtmlStr, sShowStr

sURL = document.moonpiazza.sURL.value
window.open(sURL)
oDiv.innerHTML = "正在读取数据..."

sHtmlStr = GetHtml(sURL)
ExternalData.document.write(sHtmlStr)

oDiv.innerHTML = ""
sShowStr = ""
sShowStr = sShowStr & "word:" & ExternalData.document.f1.word.value & chr(13)
sShowStr = sShowStr & "tn:" & ExternalData.document.f1.tn.value & chr(13)
sShowStr = sShowStr & "ie:" & ExternalData.document.f1.ie.value & chr(13)
alert( sShowStr )
End Function


Function GetHtml(p_sURL)

dim sHtmlStr
dim oXMLHttp

Set oXMLHttp = createObject("Microsoft.XMLHTTP")

Call oXMLHttp.Open("get", p_sURL, false)
Call oXMLHttp.Send("")
sHtmlStr = GetBytes2BSTR( oXMLHttp.responseBody )

Set oXMLHttp = nothing
GetHtml = sHtmlStr
End Function

Function GetBytes2BSTR(p_sHtmlStr)
dim sReturnStr
dim i,n

sReturnStr = ""
n = LenB(p_sHtmlStr)

For i = 1 To n
dim sCharCode
dim sNextCharCode

sCharCode = AscB( MidB(p_sHtmlStr, i, 1) )

If (sCharCode < &H80) Then
sReturnStr = sReturnStr & Chr(sCharCode)
Else
sNextCharCode = AscB( MidB(p_sHtmlStr, i+1, 1) )
sReturnStr = sReturnStr & Chr(CLng(sCharCode) * &H100 + CInt(sNextCharCode))
i = i + 1
End If
Next

GetBytes2BSTR = sReturnStr
End Function
</SCRIPT>


:_)
wssgwps 2003-07-11
  • 打赏
  • 举报
回复
想也是不行的!
这样太没安全性可言了.
gale 2003-07-11
  • 打赏
  • 举报
回复
顶一下,在线等答案
gale 2003-07-11
  • 打赏
  • 举报
回复
不会吧,这个系统要运行很多年的,漏洞可是很快就补上了啊
如果有补不上的漏洞可以实现这个功能,还请大侠赐教。
bencalie 2003-07-11
  • 打赏
  • 举报
回复
不能,它们属于不同的域,除非你利用IE浏览器的漏洞
gale 2003-07-11
  • 打赏
  • 举报
回复
那我能否在a.html中调用b.html某个button的click方法?
bencalie 2003-07-11
  • 打赏
  • 举报
回复
当然了,处于安全,JS是不允许跨域操作的
gale 2003-07-11
  • 打赏
  • 举报
回复
每次运行到disp()函数IE都报告说 拒绝访问

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧