全部產品
Search
文件中心

Function Compute:當我使用瀏覽器或cURL方式訪問函數時出現404怎麼辦?

更新時間:Jul 06, 2024

問題現象

我建立了一個Custom Runtime的HTTP函數,其中服務名為CustomDemo、函數名為func-http,並且設定了匿名的HTTP觸發器,實現Custom Runtime的HTTP Server的路由程式碼範例如下:
@app.route('/test', methods = ['POST','GET'])
def test():
當我使用cURL工具或瀏覽器等方式訪問HTTP函數的URL時,遇到404報錯。
  • 使用cURL工具訪問HTTP函數。
    curl  -v  https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test
  • 使用瀏覽器訪問HTTP函數。
    https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test
    說明 HTTP函數的URL格式為:https://<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/<path>

解決方案

您可以選擇以下任意方式解決該問題:
  • 使用Function Compute為建立HTTP觸發器分配的子網域名稱重新訪問。具體資訊,請參見步驟三:測試函數

    子網域名稱格式如下:

    https://<subdomain>.<region_id>.fcapp.run/[action?queries] 

    本文的訪問樣本如下:

    https://funcname-svcname-khljsjksld.cn-shanghai.fcapp.run/action?hello=world
  • 在訪問的命令中增加名為x-fc-invocation-target的Header。訪問格式如下:
    curl -v -H "x-fc-invocation-target: 2016-08-15/proxy/$ServiceName/$functionName" https://<account_id>.<region_id>.fc.aliyuncs.com/$path
    本文的訪問樣本如下:
    curl -v -H "x-fc-invocation-target: 2016-08-15/proxy/CustomDemo/func-http" https://164901546557****.cn-hangzhou.fc.aliyuncs.com/test
  • 為您的函數綁定自訂網域名,綁定成功後再執行以下命令重新訪問即可。關於綁定網域名稱的操作步驟,請參見配置自訂網域名
    假設網域名稱是example.com,訪問格式如下:
    curl -v  https://example.com/$path
    本文的訪問樣本如下:
    curl -v  https://example.com/test
    重要 您需要將路徑/$path設定為綁定的自訂網域名中設定的與函數名稱服務名稱對應的路徑。更多資訊,請參見路由匹配規則
  • 修改您的函數代碼,並且成功部署函數後,重新使用預設的URL訪問即可。函數代碼修改樣本如下:
    @app.route('/2016-08-15/proxy/CustomDemo/func-http/test', methods = ['POST','GET'])
    def test():
    本文的訪問樣本如下:
    curl  -v  https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test