# QA

问:

# 1. 因为遵循了RestFul规范,但是部分学校的网管不建议使用GET,POST之外的Method

答:

  • 首先在前端的request.js中进行统一的转换,将非合法的method统一修改为POST,并将真实的method通过X-HTTP-Method-Override进行传输。

  • 然后在API服务之前架设一个Nginx服务器,将被我们处理过的(携带了X-HTTP-Method-Override元素)URI转化为我们实际需要的URI,从而绕过学校的防火墙设置。

参考代码:

    //如果不使用put等请求,则需要改写请求
    if (process.env.VUE_APP_NO_PUT == 'false') {
      let m = config.method.toUpperCase();
      if (m == 'PUT' || m == 'DELETE') {
        //X-HTTP-Method-Override
        config.headers['X-HTTP-Method-Override'] = m;
        config.method = 'POST';
      }
    }
1
2
3
4
5
6
7
8
9






 
 
 






    server {
    listen       443 ssl http2;
    server_name  cc.beinet.com;
    access_log /data/logs/nginx/cc.beinet.com.log main;
    # 在你的nginx配置里,添加下面5行,记得执行 nginx -s reload 重新加载
    set $method $request_method;
    if ($http_X_HTTP_Method_Override ~* 'PUT|DELETE') {
        set $method $http_X_HTTP_Method_Override;
    }
    proxy_method $method;

    location / {
        root /data/wwwroot/html;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14

参考博客:https://blog.csdn.net/youbl/article/details/84647791(opens new window)


最后一次更新: 2021-6-2 16:28:35