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


一个完整的域名地址

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');


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值