zoukankan      html  css  js  c++  java
  • Linxu下Yii2的POST提交被拒经历

    早期于对Yii2的使用,浅谈一下自己的经验,在以往的项目中我使用的框架是Yii1,由于Yii2的出现,所以极力的想使用一下它的新特性。

    根据不同的WEB服务器,分别给出具体的配置信息,在这我的使用环境Linux系统是CentOS 7.3,Nginx1.12.0安装的PHP版本为PHP 7.0.12:

    Apache服务器端站点配置

    1、修改配置文件:/etc/httpd/conf/httpd.conf中修改两处,若配置虚拟域名另参照其它配置。

    DocumentRoot "/data1/vhosts/webapp/app.xxx.com"
    <Directory "/data1/vhosts/webapp/app. xxx.com">

    2、重定向站点目录,当前目录为 /data1/vhosts/webapp/app. xxx.com,该目录下有文件.htaccess

    隐藏文件.htaccess中配置内容:

    # prevent directory listings
    
    Options -Indexes
    
    # follow symbolic links
    
    Options FollowSymlinks
    
    RewriteEngine on
    
    RewriteCond %{REQUEST_URI} ^.*$
    
    RewriteRule ^(.*)$ /api/web/$1

    Nginx服务器端站点配置

    修改配置文件:/web/soft/nginx/conf/conf.d/default.conf

    server {
    
        listen       80;
    
        server_name  47.95.248.18;
    
        root   /web/www/app.mzhjs.com/api/web;
    
        location / {
    
            index  index.php index.html index.htm;
    
            try_files $uri $uri/ /index.php?$args;
    
        }
    
        location ~ /.(ht|svn|git) {
    
            deny all;
    
        }
    
        location = /50x.html {
    
            root   html;
        }
    
        location ~* apple-touch-icon {
    
            access_log off;
    
            rewrite .* /fav-icon.png last;
    
        }
    
        location ~ .php$ {
    
            try_files $uri = 404;
    
            fastcgi_pass   127.0.0.1:9000;
    
            fastcgi_index  index.php;
    
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
            include        fastcgi_params;
    
        }
    
        error_page  404              /404.html;
    
        error_page   500 502 503 504  /50x.html;
    
        access_log  /web/log/nginx/default.access.log;
    
    }

    特别说明:

    Apache站点目录下的.htaccess文件中的内容移植到Nginx下需要在default.conf中配置,内容即为:

    try_files $uri $uri/ /index.php?$args;

    遇到问题

    按照上面的配置,Yii2框架的站点可以正常访问,做到这认为一切OK。但是在此时遇到了一个很棘手的问题:手机app端以POST方式请求API的Web接口返回500错误,而PC端浏览器POST请求没问题。在此为Yii2的新手排解一些问题:

    1、 起初我认为是Nginx的服务器问题,Nginx官方组织也曾发布Bug信息,在1.9.及一些版本的时候对IOS、Android 一些内核POST拒绝,看到这个信息,我一直以为问题是出在Nginx,这让我顿时怀疑它的稳定行,但是我还是不相信。

    2、 POST大小限制,然后我又通过查找资料,也有的说受到POST大小限制;这一点我在用PC端浏览器POST提交成功,已经可以证明;同时我查看了配置,限制大小为18M,所以排除了这个疑虑。

    3、 找到答案:终于在看Yii2的POST验证才知道有个csrf,是防止csrf攻击的,框架默认是开启的,当我将设置'enableCsrfValidation' => false,时,问题就迎刃而解了,app端可以POST提交了。

    感谢技术圈的朋友们常来常往,希望我的每一个分享能帮助到大家,如果帮助到了您,请给我留下点点的评论或关注,我也想和您成为朋友,感谢大家一起交流一起进步
  • 相关阅读:
    mysql 远程登陆不上
    hdu 5339 Untitled【搜索】
    SqlServer 书目
    passwordauthentication yes
    oracle 11g RAC ocfs2
    Oracle 11g RAC database on ASM, ACFS or OCFS2
    CentOS ips bonding
    Oracle 11g RAC features
    openStack 王者归来之 trivial matters
    openstack windows 2008 img
  • 原文地址:https://www.cnblogs.com/fengguozhong/p/12213154.html
Copyright © 2011-2022 走看看