【问题标题】:Azure Functions proxy to url provided by querystring gives 404查询字符串提供的 url 的 Azure Functions 代理提供 404
【发布时间】:2020-11-12 11:30:57
【问题描述】:

我已设置 Azure Functions 代理(使用 proxies.json)。这应该只选择原始请求的url 查询字符串参数中给出的值,并将其用作backendUri 的值。所以目标是调用代理的响应包含直接调用url查询字符串参数中的URL的响应。因为 CORS,我需要这个。

这是我的proxies.json

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "proxy1": {
      "debug": true,
      "matchCondition": {
        "methods": ["GET"],
        "route": "/proxy/"
      },
      "backendUri": "{request.querystring.url}"
    }
  }
}

当我使用 https://not-an-actual-url.azurewebsites.net/proxy/?url=https://stackoverflow.com 调用代理时,我得到了一个 404。如果我对 url 参数的值进行编码也是如此。但是,如果我将 proxies.json 中的 backendUri 设置为静态 URL,而不是尝试使用查询字符串,则它可以工作。

总而言之,我希望 backendUri 的值取决于原始请求的 URL。正如docs 中所述,这应该是可能的。引用文档:

将后端 URL 设置为另一个端点。此端点可以是另一个函数应用中的函数,也可以是任何其他 API。该值不需要是静态的,它可以引用原始客户端请求中的应用程序设置和参数。

【问题讨论】:

    标签: proxy azure-functions


    【解决方案1】:

    当我使用 https://not-an-actual-url.azurewebsites.net/proxy/?url=https://stackoverflow.com 我得到一个 404。如果我对 url 的值进行编码,也是一样的 范围。如果我将 proxies.json 中的 backendUri 设置为静态 URL 但是,它不是尝试使用查询字符串,而是有效。

    从您的问题描述来看,您似乎没有真正的HttpTrigger。您想使用函数应用作为服务器将请求转发到地址,对吗?

    我认为你想从请求中动态获取 url 并将其应用于 proxies.json 是不现实的。因为这个文件在function app启动的时候就已经加载好了,不能让请求的信息进入,它会把你的值作为普通字符串读取,如果不是直接url,就无法读取。

    对于CORS,可以找一些免费的公共服务器进行转发,也可以自己搭建一个服务器进行转发。函数app的proxies.json可能无法实现你的想法。

    【讨论】:

    • 谢谢@bowman-zhu 的回答。是的,我没有真正的HttpTrigger,只是使用proxies.json。我了解您的意思是 proxies.json 中的 backendUri 只能是一个静态值,没有任何变量来自原始请求。这与文档中的内容相矛盾(请参阅我更新的问题中的文字)。
    • @Christian 好的,我明白了,会检查的。
    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 2011-11-27
    • 2018-01-13
    • 2013-04-01
    • 2018-12-30
    • 2019-06-02
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多