ajax访问设置header头允许ajax跨域请求
在做项目的时候,我们有时候希望能够可以跨域进行请求,但是ajax访问php接口的时候,通常会报一个错误:
Failed to load 你的网址/test.php: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
这种情况解决起来也非常的简单,我们只需要给php的文件加一个header头就可以了。
header("Access-Control-Allow-Origin: *"); // 表示允许任何域名进行访问
当然我们还可以进行域名的限定,只允许特定的域名进行访问
header("Access-Control-Allow-Origin:http://www.xiaoerhu.com");
另外我们还可以设置,允许的请求是get、post等
// 响应类型 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE"); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type');
补充:
何为跨域请求呢?大致可分为如下几种情况
A.abc.com 发起一个到 abc.com/B 的ajax请求,也会有跨域的问题。之所以会有跨域问题,实则是因为www.abc.com其实同A.abc.com一样,也是一个二级域名,而非一级域名(一级域名是http://abc.com)
对于是否允许跨域,更详细的说明可以看下表:
URL | 说明 | 是否允许通信 |
http://www.a.com/a.js http://www.a.com/b.js | 同一域名下 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js | 同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js | 同一域名,不同端口 | 不允许 |
http://www.a.com/a.js https://www.a.com/b.js | 同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://170.32.82.74/b.js | 域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js | 同一域名,不同二级域名 | 不允许 |
http://www.a.com/a.js http://a.com/b.js | 二级域名和一级域名 | 不允许(cookie这种情况下也不允许访问) |
http://www.b.com/a.js http://www.a.com/b.js | 不同域名 |
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. PHP相关 > ajax访问设置header头允许ajax跨域请求