php代理html跨域,php + ajax + html 跨域问题

XMLHttpRequest cannot load http://localhost:8080/abc/index.php. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘file:///E:/myprogram/php/abc/index.html‘ is therefore not allowed access.

我想实现的目标是这样的: 用php写好一个接口,然后html中ajax直接post这个接口,进行json数据的交互。

我只要json,不要说什么jsonp。

简化的index.html代码

1

2

3

4

php+ajax+html跨域问题

5

6

7

8

9 姓名

10

11

12

13

14 $(function(){15 $("#btn").click(function(){16 varuname=$("#uname").val();17 varserviceUrl= "http://localhost:8080/abc/index.php";18 varparam={‘json‘:‘{"name":"‘+uname+‘"}‘};19 $.post(serviceUrl,param,function(data){20 console.log(data);21 },"json");22 });23 });24

25

简化的index.php代码

1 <?php2

3 //对json字符串解码,变成数组

4 $json_arr = json_decode($_POST[‘json‘],true);5

6 //对json_arr数组进行处理

7

8 echo json_encode($json_arr);9

10 ?>

跨域问题的出现

开启apache服务器后,这样访问 file:///D:/abc/index.html 页面,不要http://localhost:8080/abc/index.html 访问,因为这样访问的话,就看不到跨域问题的出现了

当我们在index.html填写好姓名后,点击btn按钮,这时ajxa请求就发送出去了。在chrome的调试模式下,控制台会提示有错误发生,如下

bef5e064e333ef6c2026040212793e68.png

什么是跨域?

我的理解就是:在A网站域名下去访问B网站下的资源。

目前我使用的chrome(版本 46.0.2471.2)、FireFox(39.0)、Opera(版本30.0.1835.125)都会出现这个跨域问题

网上有很多的解决方法!

我只用了一个,其他的不适合,或者根本就没测试

解决方法

在html的ajax要访问的php页面中添加下面的一行代码:

header("Access-Control-Allow-Origin:*");

也就是http://localhost:8080/abc/index.php中添加

然后再和上面一样访问一次  file:///D:/abc/index.html ,填写好姓名,点击btn按钮,结果如下

6777ebb8485a42862da40d3c6c40942e.png

没有出现跨域的错误提示了!

原文:http://www.cnblogs.com/lhat/p/4717612.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值