使用nginx做反向代理,当后端服务器需要认证时,需要把认证的http header也传到后端服务器上去,配置为:
proxy_set_header Authorization $http_authorization;
这样配置后,服务器会发出一个认证窗口出来,提示用户输入用户名密码。

如果不想让用户输入用户名密码,可用下面的配置:

# 隐藏发给用户的认证http header,相当于不提示用户输用户名密码了
proxy_hide_header WWW-Authenticate;
# 发送httpd 认证 header给后端服务器。
proxy_set_header Authorization "Basic dXNlcjpwYXNzd29yZA==";

dXNlcjpwYXNzd29yZA==是base64(user:pass)得到的。

解释一下上面两个http header:

WWW-Authenticate: 这是GET的时候带的,服务器发给客户端的。表明客户端请求实体应该使用的授权方案

示例:WWW-Authenticate: Basic

Basic是基本的http认证方式,除此之外还有NTLM等,NTLM是微软的,nginx目前不支持。

Authorization 这个是用户输入用户名和密码后,POST到服务器的时候带的。HTTP授权的授权证书
示例:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

下面是一个提示用户输入用户名和密码的httpd auth反向代理的配置例子:

upstream dwserver {          
      server 10.18.0.1:81 max_fails=3 fail_timeout=30s;
   }

   server {
        listen       80;
        server_name  blog.gamecf.cn;
        location ~ .*$ {
            proxy_redirect off;
#            proxy_pass_request_headers on;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#            proxy_hide_header Authorization;
#            proxy_hide_header WWW-Authenticate;
            proxy_set_header Authorization $http_authorization;
#            proxy_no_cache $cookie_nocache  $arg_nocache$arg_comment;
#            proxy_no_cache $http_pragma     $http_authorization;
#            proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
#            proxy_cache_bypass $http_pragma $http_authorization;
            client_max_body_size 50m;
            client_body_buffer_size 256k;
            proxy_connect_timeout 60;
            proxy_send_timeout 60;
            proxy_read_timeout 120;
            proxy_buffer_size 24k;
            proxy_buffers 4 64k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            proxy_max_temp_file_size 128m;
            proxy_pass http://127.0.0.1:8080;
        }

        access_log /data1/app/log/nginx/gamecf.cn.log combined;
        error_log  /data1/app/log/nginx/gamecf.cn-error.log warn;
   }

相关文章:http://www.huilog.com/?p=636

Jquery Ajax设置withCredentials解决跨域请求
后端代码:

httpResponse.setHeader("Access-Control-Allow-Origin", httpServletRequest.getHeader("Origin"));
httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");

前端代码:

 $.ajax({
            url: "http://localhost:8080/orders",
            type: "GET",
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true,
            success: function (data) {
                render(data);
            }
 });

跨域请求想要带上cookies必须在请求头里面加上{crossDomain: true, xhrFields: {withCredentials: true}}设置。

相关文章:https://blog.csdn.net/cckevincyh/article/details/81140443

根目录

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.gamecf.cn [NC,OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !HTTPS [NC]
RewriteRule ^(.*)$ https://www.gamecf.cn/$1 [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_METHOD} ^(HTML)
RewriteRule ^(.*)$ /index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

子目录

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} s=(.*)
RewriteRule ^(.*)$ ../index.php [QSA,L]
RewriteCond %{REQUEST_METHOD} ^(HTML)
RewriteRule ^(.*)$ ../index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../index.php [QSA,L]
</IfModule>

先刷系统到miui9 7.11.16版本(hm2a的最后一个开发版)

hm2a只能刷到安卓4.4.4不支持安卓5的系统

打开开发版系统自带的root功能,然后网上找“一键解锁system.bat”进行完全root。之后直接使用系统自带的root管理权限。

安装Xposed框架,网上找“XposedInstaller_2.6.1_MIUI8.apk”必须安装miui专用的框架。

安装情迁红包1.5.5插件,网上找“cn.qssq666.redpacket_v73_12108f_0.apk”该插件完美匹配“QQ7.5.0.apk”,但是此插件匹配的微信已被限制登录。

这里微信新版本也限制在安卓4.4版本上安装,目前安卓4.4能使用的最后微信版本为7.0.6(该版本不匹配情迁红包1.5.5)打开插件后微信自动闪退。

总结:
QQ插件与微信不能同时使用!