ajax能突破跨域吗,AJAX跨域解决方案

1,对于域名a.a.com和域名http://www.a.com/的两个页面

如果要在a.a.com使用AJAX访问http://www.a.com/的时候js 会提示"没有权限"

这样的错误很明显,跨域了,在js当中跨域,怎么解决呢?

发现在页面用Script来引用http://www.google.com/js/js.js 时却不会报错,所以就想了个转化的办法

也是在网上查到的,人家称之为AJAJ技术,其实也是AJAX的一部分吧

既然我要用script标签来引用外部js,那么肯定得有个申明吧

----------------------------------------

var p='你色吗';

----------------------------------------

那么我就可以这样写了

//这里注意点,不是IF

(doc.readStatus==200)

alert(p);

整个源码示例:

copycode.gif

1

<

HTML

>

2

<

HEAD

>

3

<

TITLE

>

New Document

TITLE

>

4

<

META

NAME

="Generator"

CONTENT

="EditPlus"

>

5

<

META

NAME

="Author"

CONTENT

=""

>

6

<

META

NAME

="Keywords"

CONTENT

=""

>

7

<

META

NAME

="Description"

CONTENT

=""

>

8

HEAD

>

9

<

SCRIPT

LANGUAGE

="JavaScript"

src

=""

id

="get"

>

10

SCRIPT

>

11

<

SCRIPT

LANGUAGE

="JavaScript"

>

12

13

function

get(url)

14

{

15

var

obj

=

document.getElementById(

"

get

"

);

16

obj.src

=

url;

17

(obj.readStatus

==

200

)

18

{

19

alert(xml);

20

}

21

}

22

function

text()

23

{

24

get(

'

get.php

'

);

25

}

26

27

SCRIPT

>

28

<

BODY

>

29

<

INPUT

TYPE

="button"

value

="CLICK ME"

onclick

="text()"

>

30

BODY

>

31

HTML

>

copycode.gif

get.php的代码就是

<? echo '你色吗?' ?>

点击按钮,输出 “你色吗?”

就这么简单,看起来比那个Ajax的简单吧

这个是Ajax执行权限的跨域,另一个,cookie的跨域,这个很简单了

2,cookie的跨域

var main=".main.com"; //记着一定要加个“.”

function setCookie(name,value,day)

{

var now=new Date();var ms;

if(day>0){

now.setTime(now.getTime()+(day*24*3600*1000));

}

document.cookie=name+"="+escape(value)+";expires="+now.toGMTString()+";path=/;domain="+main;

}

3,Forms验证下的一级域名和二级域名的登录同步

简要的说下

注意的几项 name domain 这两个选项在父子域名中必须相同

另外登录代码

FormsAuthenticationTicket tic = new FormsAuthenticationTicket(uname, true, gettimeByvalue(time));

string entic = FormsAuthentication.Encrypt(tic);

HttpCookie h = new HttpCookie(FormsAuthentication.FormsCookieName, entic);

h.Expires = d;

h.Domain = FormsAuthentication.CookieDomain;

h.HttpOnly = true;

HttpContext.Current.Response.Cookies.Add(h);

注意加红部分

注销部分

Context.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);

FormsAuthentication.SignOut();

Response.Redirect("/");

4,JSONP方式

这里补上浪子兄的建议,使用JSONP突破跨域瓶颈

理论上就是我上面说的方法,只是一些js框架都封装起来了

就已jquery来做示例

ajax方法:

ExpandedBlockStart.gif

代码

copycode.gif

$.ajax({

url:"show.aspx",

dataType:"jsonp",

jsonp:"jsoncallback",/*默认值:callback*/

success:function(data){

alert(data.mes);

}

});

copycode.gif

show.aspx页面:

Response.ContentType

=

"

application/x-javascript

"

;

string

cb

=

Request.Params[

"

jsoncallback

"

];

Response.Write(cb

+

"

({mes:\"kofaslfj\

"

})

"

);

Response.End();

getJSON方法:

$.getJSON(

"

show.aspx&callback=?

"

,function (d){

alert(d.mes);

}

);

这个show.aspx与上面差不多一样,把jsoncallback换成callback就行了

另外不知有人有不同域名跨域的解决方案,希望能够一起讨论...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值