AJAX跨域访问难题

大白菜芯 2006-01-26 04:17:37
AJAX跨域访问难题
不多说了! 加上个帖子一共200 ,请强人指点一下。
那位有真正的解决办法。是不需要让用户更改IE或加什么信任域的。
...全文
655 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大白菜芯 2006-01-29
  • 打赏
  • 举报
回复
问题已经解决!! 研究及翻阅了很多资料,AJAX跨域访问问题最终的答案好象应该是不可能!
无论如何,不可能是没有办法了.

但是我还是找出来一个好的办法.因为我需要解决的问题是用户认证的问题。我用了一个简单的办法.具体思路如下.

开始建立一个TABLE 然后包含一个FORM 这个TABLE 的STYLE 是 DISPLAY: NONE
然后在这个表中建立一个IFRAME 名字是ACT 它的TARGET是一个不存在的空白页面

然后在写一个JS, 内容就是FORM.SUBIMIT() 并将需要提交的内容可以提前放到上边的哪个FORM 中. 然后让脚本一出现就自动有提交操作.但是这个提交的TARGET是IFRAME的名字.

以上操作完成,就可以实现本页打开有一个隐藏的提交操作.而不刷新屏幕.
内容已经提交到指定的服务器方面,服务器方面根据需求生成一个.TXT 文件 放到服务器指定地方。
然后在用户方可以打开这个文件以获得服务器的返回内容.
我说的比较简单.
但是做出来的效果和AJAX 几乎是一样的.而且可控制性应该更好。

最后还是对AJAX 跨域访问问题表示遗憾. 破碎了很多梦想啊!! 哈.
大白菜芯 2006-01-26
  • 打赏
  • 举报
回复
l.php 文件如下:
<?
@header("Content-type: text/html; charset=utf-8");


function GetLicense (){
/**
* 这里是获得服务器返回资料!
*/
$Server = $_SERVER[HTTP_HOST]=='127.0.0.1' ? "localhost" : $_SERVER[HTTP_HOST] ;
$DateIs = date("Y-m-d",time());
$Script = "";
$Script .="
<script language=\"JavaScript\">

function GetResult(hostname,TheDate)
{

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
http_request = new ActiveXObject(\"Microsoft.XMLHTTP\");
}
var linkurl=\"http://localhost/s.php?serverhost=\"+hostname+\"&DateIs=\"+TheDate;
//alert(linkurl);
http_request.open('GET',linkurl,false);
http_request.send(null);

//通过XMLHTTP返回数据,开始构建Div.
//var returntxt=unescape(http_request.responseText)
var returntxt=http_request.responseText;
alert(returntxt);
BuildArrib(returntxt);

}

function BuildArrib(txt)
{
ajax_license.style.display='';
document.getElementById('ajax_license').innerHTML = txt;
}
</script>
<div id='ajax_license' style='display:none'> 111</div>

<script language=javascript>
GetResult('$Server','$DateIs');
</script>
";
return $Script;
}
echo GetLicense();

?>

s.php 如下:

<?php
error_reporting(7);
@header("Content-type: text/html; charset=utf-8");

$TheError_txt = "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
\"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<title>SmartShop</title>
</head>
<body>
$TheError
</body>
</html>";


function file_write($filename, $flag, $content) {

if (file_exists($filename)) {
if (!is_writable($filename)) {

if (!chmod($filename, 0777)) {
$TheError = "Cannot change the mode of file ($filename)";
return $TheError;
};
}
}

if (!$fp = @fopen($filename, $flag)) {
$TheError = "Cannot open file ($filename)";
}

if (fwrite($fp, $content) === FALSE) {
$TheError = "Cannot write to file ($filename)";
}
if (!fclose($fp)) {
$TheError = "Cannot close file ($filename)";
}
return $content;
}


echo file_write("1.txt","w",$TheError_txt);

?>


现在我的问题是。我没有办法输入L.PHP后,使得建立1.txt 文件。请问为什么!!
孟子E章 2006-01-26
  • 打赏
  • 举报
回复
http://www.xiacong.com/blogview.asp?logID=325
孟子E章 2006-01-26
  • 打赏
  • 举报
回复
跨域访问,一般需要这样:
将url传递到服务器端在服务器端取数据
或者采用欺骗的办法
bacp 2006-01-26
  • 打赏
  • 举报
回复
楼上说的,我看了一下,

所说的就是有一点像小偷一样

远程取得文件

再动态分析,静态加载
leihome 2006-01-26
  • 打赏
  • 举报
回复
成功实现ajax,xmlhttp跨域访问
http://www.sp1.cn/web/918.htm

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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