您的位置:首页 > 理论基础 > 计算机网络

ajax笔记4--如何解决跨域问题

2016-09-18 18:16 253 查看
一个完整的域名地址
http://   www.    abc.com : 8080/   hello.html

协议    子域名   主域名     端口     请求资源地址

跨域就是 不同域之间相互请求资源

比如 http://www.abc.com/index.html 请求 http://www.efg.com/service.php
javascript不允许跨域访问,在笔记2中的案例,如果将客户端请求地址改变一下

默认为 localhost,但其实127.0.0.1也是本机

但是如果再代码中将地址改为 127.0.0.1 就会出错

这就是js不允许跨域访问

解决跨域访问有以下3个途径

笔者注:理解相当粗浅,仅仅做个记录,方便日后查看

1.在服务器端找一个代理

比如我从abc这个域要访问qaz,那么我可以在abc服务器端写一个代理,让这个代理来帮忙转接到qaz,

这样在前端js看来是访问abc中的一个资源,而实际上是访问了qaz

2.Jsonp,但须注意的是,该方法不支持POST

对于前端代码改变也很微乎其微,如下

dataType: "jsonp",

jsonp: "callback",

因后端使用php,暂且不提

3.XHR2

HTML5提供的XMLHttpRequest Lecel2已经实现了跨域访问以及其他的一些新功能

IE10以下的版本均不支持

只需在服务器端做改造即可

header('Access-Control-Allow-Rrigin:*');

*号表示可以访问所有域名,也可以指定特殊的域名

header('Access-Control-Allow-Methods:POST,GET');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax jsonp xmlhttprequest2