# 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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
← 内置拦截器