nginx重寫修改參數

nginx重寫修改參數

我正在嘗試為外部 API 建立 JSON/JSONP 代理程式。到目前為止,這是我的配置:

server {
        listen          80;
        server_name     api.example.com;
        location /api/ {
                if ( $arg_callback ) {
                        echo_before_body '$arg_callback(';
                        echo_after_body ');';
                }
                if ($args ~ (.*)callback=[^&]*(.*)) {
                        set $args $1$2;
                }
                proxy_pass      http://api.external.com;
                rewrite ^/api/(.*)$ /external/api/$1?api_key=MY_KEY$is_args$args break;
        }
}

代理在沒有參數的情況下工作正常callback,傳回有效的 JSON。但是,當我包含 時callback,它仍然只返回 JSON,而沒有回調圍繞它。我必須callback在呼叫外部 API 之前刪除參數,因為如果請求包含無法識別的選項,它會傳回錯誤。如何在傳遞請求之前將回調參數從請求中剝離出來(如果存在),但仍使用它來建立 JSONP?

答案1

你讀過嗎如果是邪惡的

它仍然只回傳 JSON,沒有包裝器。

這裡的包裝紙是什麼?第一個/第二個如果或兩者?

編輯:

我會做簡單的偵錯來測試您的正規表示式是否有效(增加日誌等級以查看發生了什麼)(解決方案未經測試)

server {
        listen          80;
        server_name     api.example.com;
        location /api/ {


                rewrite ^/(.*)callback=[^&]*(.*)$ /testurl/$1/$2 last;  
        }

        location /testurl  {
           return 200;
        }


}

在此步驟之後,我將放入第二個 IF - 語句,如果有效,最後是第一個

你的 url 與回呼參數看起來怎麼樣?

相關內容