如何配置解决跨域的问题

后台使用PHP编写简单的接口

网上有很多关于如何配置header来解决跨域请求的问题,如下所示:

 1     // 指定允许其他域名访问  
 2     header('Access-Control-Allow-Origin:http://127.0.0.1:8282');  
 3     // 响应类型  
 4     header("Access-Control-Allow-Methods:HEAD,POST,GET,PUT,DELETE,OPTIONS"); 
 5     header("Access-Control-Max-Age:60"); 
 6     header('Access-Control-Allow-Credentials: true');
 7     // 响应头设置  
 8     header('Access-Control-Allow-Headers:x-requested-with,content-type'); 
 9 
10     $res = array("name" => "Echo","age" => 26);
11     
12     echo json_encode($res);
13     return json_encode($res);
14     

关于代码中配置的header,我曾尝试很多次仍没有办法成功,现在针对自己的经验讲解注意问题:

  1. Access-Control-Allow-Origin:http://127.0.0.1:8282或者
    Access-Control-Allow-Origin:*  两者配置都可以,但是要注意的是
    http://127.0.0.1:8282以及*都不需要带上单引号或者双引号!
  2. Access-Control-Allow-Credentials: true  如若配置该项,则在前端请求代码中的头部信息中同样也要配置
    //跨域时,cookie添加到请求中
    $httpProvider.defaults.withCredentials = true;
  3. 在以上配置好后如果遇到预检OPTIONS请求,则不妨试试
    Access-Control-Allow-Headers:x-requested-with,content-type  在options预检后,浏览器会自动重新发送正常的请求,像这样:

    

    

前端代码中在配置url时

url="http://127.0.0.1/study/phpServer/test.php";
一定不要忘记加上http://
如果url=127.0.0.1/study/phpServer/test.php
不然请求地址会在前面加上当前浏览地址:

http://127.0.0.1:8282/127.0.0.1/study/phpServer/test.php
从而请求不到数据

 另外据网上信息提示,如果要在

Access-Control-Allow-Origin处理多个域的话,如下设置
$sorigin = array(  
    'domain1',  
    'domain2'  
);  
  
if(in_array($origin, $origins)){  
    header('Access-Control-Allow-Origin:'.$origin);  
    header('Access-Control-Allow-Methods:POST');  
    header('Access-Control-Allow-Headers:x-requested-with,content-type');  
}  

  但是暂时还没有试验~


转载于:https://www.cnblogs.com/echo2016/p/5395283.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值