您的位置:首页 > Web前端 > JavaScript

JS跨域问题解决方案

2009-06-04 13:26 127 查看
这个问题弄了好久 一定要记下来

一般用ajax是不可能实现跨域问题的

这里就要用到 标签属性src=""

任何有src属性的标签 都可以跨域调用令一个域的后台

想src=http://i.joysys.com/index.aspx 就可以调用 i.joysys.com的index.aspx 页面了

但是虽然调用了 却做出返回 这就有看index.aspx页面的了

在index.aspx页面中 用

Response.Write("");

就可以做出输出 也就是返回啦

当然这跟标签有关系

比如你用 <script src=""> 标签的话

你在 index.aspx中 输出js语句

Response.Write("alert(‘返回’)");

这样 这段js是可以被执行的

但是 两个域的 js 变量 是不可以互用的 (至少 目前我测试时没有通过的)

这样要是 就需要返回一个值怎么办呢

我苦思冥想 也参考了别人的一些资料

终于被我发现 用 js

var im = new Image;

im.src = "index.aspx";

这样调用时有效果的

在index.aspx 页面做出

using System.Drawing;//基本绘图
using System.Drawing.Imaging;//处理图像

private void outWidth(int width, int hen)
{
Bitmap image = new Bitmap(width, hen);//定义图像

try
{

//输出图像
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Gif);//将图片保存到指定流
Response.ClearContent();//清楚缓冲区的流
Response.ContentType = "imge.Gif";//配置输出类型
Response.BinaryWrite(ms.ToArray());//输出内容
}
finally
{
image.Dispose();
}
}

输出一个图片

这个从这个中图片 你看到什么呢

哈哈

其实我是想利用这个的 width

当调用后 得到图片width 为 0 做相应操作

width 为 1 做相应操作

当然 如果单是这样调用的话

index.aspx 只是执行一次

当你要不停的 读后台 不停的刷新的时候你可能会想用到

window.setInterval(); 来时时调用就好了吗

答案是 NO~~~~~!!!!!!!!!!!!!!!!!!

这个问题ajax同样适用~~!

当src="index.aspx"值与上一次相同的话 将不执行 index.aspx 页面

直接返回上一次 执行的结果 。。。这可能是为了 不让服务器承受太大压力 所做的

但是 没关系 这怎么能难倒我呢 哼哼~~!

src="index.aspx?ids="+new Date().getTime();

这样的话 每次调用的值就都不同了 ~

index.aspx 每次都可以执行了

这样就成功解决了 跨域问题 哈哈哈哈

第一次处理完这种 我没有遇到过的 高技术的问题

弄了好久呀 不过这都是值得的 谢谢来看我博客的朋友 记得评论一下 呵呵 谢谢了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: