我的用例是我有一封包含“验证您的电子邮件地址”链接的电子邮件。当用户单击此链接时,用户代理会执行 GET 请求,如下所示:
GET http://widgetwerkz.example.com/confirm_email?challenge=LSXGMRUQMEBO
Run Code Online (Sandbox Code Playgroud)
服务器将作为 POST 执行此操作(因为它是一个副作用操作)。我根本无权访问服务器代码。目标请求应该是:
POST http://widgetwerkz.example.com/rpc/verify
{ "challenge": "LSXGMRUQMEBO" }
Run Code Online (Sandbox Code Playgroud)
我可以执行什么 Nginx 重写来实现此目的?
编辑:上下文中的解决方案
http {
server {
# ...
location /confirm_email {
set $temp $arg_challenge;
proxy_method POST;
proxy_set_body '{ "challenge": "$temp" }';
proxy_pass http://127.0.0.1/rpc/verify;
set $args '';
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将所有这些结合在一起:
/confirm_email为/rpc/verify/rpc/verify,没有?challenge=LSXGMRUQMEBO){ "challenge": "LSXGMRUQMEBO" }感谢伊万让我走上正轨!
你需要这样的东西:
location /confirm_email {
proxy_method POST;
proxy_set_body '{ "challenge": "$arg_challenge" }';
# your proxy_set_headers and other parameters here
proxy_pass <your_backend>/rpc/verify?;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4386 次 |
| 最近记录: |