js跨域访问问题--Access-Control-Allow-Origin
需求背景:最近的实际开发中,遇到的一个问题。大意是就是,要在已有的项目基础上开发一个开放接口,提供给新的系统使用(仅提供给具有特定域名下的系统使用),由新的系统通过js发送get请求去获取该接口返回的数据。
由于开始没有意识到这里面的坑,所有走了不少弯路,这里对跨域的概念略做解释。所谓js跨域,就是域名A下的某个js文件(或者网页中的js代码),需要请求域名B下面的某个页面(或者接口)以获取数据;但对于js来说,出于对某些方面的安全性考虑,这通常是不允许的(有兴趣的可以去搜下“跨域攻击”)。这就要求域名B下面的页面或者接口要在其响应报文中加上某些内容,以允许域名A下的js代码可以获取到其返回的内容。
好了,废话不多说,下面贴上代码。
1、对于返回数据是json或者xml之类的,应该在Response的Header中加上:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
注意,这里的"*"是允许所有域名的跨域访问,在实际开发中通常是不会使用到的。可以使用允许跨域的域名代替,例如:我只允许:www.111.cn域名跨域,就可以这么写:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://www.111.cn");
2、对于返回html类的数据,可以这么写:
<html> <head> <meta http-equiv="Access-Control-Allow-Origin" content="*"> </head> <body> </body </html>
“*”号的作用同上。

浙公网安备 33010602011771号