2015-07-27 11:09:34 8378次浏览 3条回答 6 悬赏 10 金钱

就是比如我本机有一个注册的html页面,单独的,与yii无关,不是yii里的view,然后我用yii写的接口放在买的服务器上,那么它们之间就有一个跨域的问题,之前没用框架写的接口,解决跨域是只要在php接口头上加一句header("Access-Control-Allow-Origin:*");就可以了,html里面像这样子请求:

$.ajax({
    type: "POST",
    url: "http://xxxx",
    dataType:"json",
    data: {psd:"298865"},
    success:function(json){  
         alert(json);}
    });
});

然后现在就是我的html里url写的是 http://localhost:8080/basic/web/index.php?r=user/register,我暂时还没把接口放到买的服务器上去,可是现在本地的它都报错:

403 Forbidden    You don't have permission to access /127.0.0.0:8080/basic/web/index.php
on this server.

所以想问下 是不是要配置什么的,还是说url不是那样写的。另外就是如果要跨域的话,又该怎么配置,貌似yii有个助手类use yii\filters\Cors;

use yii\helpers\ArrayHelper;
public function behaviors()
{
    return ArrayHelper::merge(
        [['class' => Cors::className(),],], parent::behaviors());
}

助手类要怎么配置。

最佳答案

  • 非释_Ray 发布于 2015-07-27 11:33 举报

    请先确认你能正常的使用user/register,比如直接在网页访问。检查你YII中编写的注册方法是否正常使用
    其次,在你自己写的HTML中用ajax方式访问上方同样的地址,看看是否是跨域的问题
    如果是跨域的问题,舰长已推荐jsonp

    5 条回复
    回复于 2015-07-27 12:21 回复

    网页上能正常使用user/register。JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。涉及到用户注册时的密码,get就不安全了呢。

    回复于 2015-07-27 12:36 回复

    现在本地的好了,后来报了个400错:Unable to verify your data submission. 然后百度了下是要在controller中添加public $enableCsrfValidation = false; 然后本地的就OK了,我再来试试能不能跨域哈。

    回复于 2015-07-27 14:37 回复

    嗯,那个是表单csrf验证。如果不用YII的表单控件,可以选择关掉。跨域的话,http://blog.163.com/wger_163_dh/blog/static/14264615520130243568649 看看是不可是可以解决

    回复于 2015-07-27 15:49 回复

    好了,跨域成功了。只要在controller中加:
    use yii\filters\Cors;
    use yii\helpers\ArrayHelper;
    public function behaviors()
    {
    return ArrayHelper::merge(
    [[‘class’ => Cors::className(),],], parent::behaviors());
    }

    回复于 2015-10-21 17:06 回复

    如果现在的behaviors里 已经有一个 return [] 了 怎么合并一块?

  • 回答于 2015-07-27 11:15 举报

    楼主不懂markdown语法吗?我已经帮你重新编辑了,以后请注意!

    1 条回复
    回复于 2015-07-27 12:19 回复

    恩恩 好 新人不懂 以后还望多指教,谢谢!

  • 回答于 2015-07-27 11:24 举报

    考虑使用 jsonp 解决跨域的问题。

    1 条回复
    回复于 2015-07-27 12:20 回复

    JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。涉及到用户注册时的密码,get就不安全了呢。

您需要登录后才可以回答。登录 | 立即注册
阿星
见习主管

阿星

注册时间:2015-07-20
最后登录:2017-01-18
在线时长:7小时1分
  • 粉丝5
  • 金钱245
  • 威望0
  • 积分315

热门问题