服务器端解决ajax请求跨域

有时,在自己的服务器上用ajax脚本请求领一服务器时,会报:
XMLHttpRequest cannot load 【ajax请求的服务器url】 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 【自己服务器】 is therefore not allowed access.

XMLHttpRequest2 进行跨域访问时需要服务器许可,不是任何域都接受跨域请求的。先来看一下从 Yahoo YQL 域返回的响应头(Response Header ):
HTTP/1.1 200 OK
Set-Cookie: AO="o=1&s=1&dnt=1"; Version=1; Domain=yahoo.com; Max-Age=630720000; Expires=Sat, 18-Jun-2033 10:07:41 GMT; Path=/
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=899
Content-Type: text/xml;charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Sun, 23 Jun 2013 10:07:40 GMT
注意里面有一条标识 Access-Control-Allow-Origin:* ,这就表示允许跨域访问,所以可以正常访问该域,而对于其他没有该标识的域就会出现禁止访问提示。
如果要接受跨域访问请求,就必须在服务器端返回的资源中加入 Access-Control-Allow-Origin 头标识, Access-Control-Allow-Origin 的值可以是 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求。比如,在 HTML 中可以设置:
1.在ajax请求的那个服务器上输出的页面上做header的一个标签,
<meta http-equiv="Access-Control-Allow-Origin" content="*">
*代表所有的服务器 或 只允许某一个
<meta http-equiv="Access-Control-Allow-Origin" content="http://www.baidu.com:80">

2.在ajax请求的那个服务器上脚本上设置header请求参数
Access-Control-Allow-Origin: *
如,在yii2上
Yii::$app->getResponse()->headers->set('Access-Control-Allow-Origin', '*');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值