在docker容器内运行的Azure函数中设置CORS

在docker容器内运行的Azure函数中设置CORS,docker,cors,azure-functions,Docker,Cors,Azure Functions,我创建了一个azure函数,它公开了另一个项目中使用的API。我想让在前端工作的团队拥有我们API的Docker映像,以帮助他们进行开发。我已经使用运行func init LocalFunctionsProject--worker runtime dotnet--docker时生成的Dockerfile打包了azure函数,具体如下 这将产生以下Dockerfile内容: FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS installer-env C

我创建了一个azure函数,它公开了另一个项目中使用的API。我想让在前端工作的团队拥有我们API的Docker映像,以帮助他们进行开发。我已经使用运行
func init LocalFunctionsProject--worker runtime dotnet--docker
时生成的Dockerfile打包了azure函数,具体如下

这将产生以下Dockerfile内容:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS installer-env

COPY . /src/dotnet-function-app
RUN cd /src/dotnet-function-app && \
    mkdir -p /home/site/wwwroot && \
    dotnet publish *.csproj --output /home/site/wwwroot

FROM mcr.microsoft.com/azure-functions/dotnet:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true


COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]
然后,我在前端项目上创建了一个
docker compose.yml
文件:

version: "3.7"
services:
  frontend:
    image: frontend:latest
    build: .  
    ports: 
      - "3000:3000"  
    env_file: 
      - frontend.docker.env
  backend: 
    image: backend:latest
    env_file:
      - backend.docker.env
    ports: 
      - "8080:80"   
这成功地启动了两个容器,一个是前端,另一个是后端。在我的
frontend.docker.env
中,我已将变量设置为指向
后端
,以便前端调用直接指向
http://backend/api/myendpoint
然而这就是一切失败的地方,我遇到了一个CORS问题:

我所尝试的

  • 每当我从Postman公开的8080端口调用后端时,一切正常。我已经尝试在我的回复中手动添加一个
    访问控制允许来源
    标题设置为
    *
    ,我可以验证该标题是否在邮递员中通过。然而,前端仍然面临CORS问题
  • 已阻止跨源请求:同一源策略不允许读取位于的远程资源http://backend/api/myendpoint. (原因:CORS请求未成功)

  • 我的另一种方法是通过在Dockerfile上运行以下指令,手动更改
    azure函数主机
    文件中的
    web.config
  • 运行sed-i的///g'azure函数主机/web.config

    之后,我看到以下标题来自Postman中的响应:

    访问控制允许标头=X-request-With,内容类型

    访问控制允许方法=获取、发布、选项、放置、修补、删除

    访问控制允许原点=*

    然而,我仍然面临着同样的问题。邮递员工作,前端不。。。
    你知道问题可能是什么,或者如何正确设置CORS吗?这里正在讨论类似的问题:。遗憾的是,没有一个答案对我有效:(@LuisBecerril你解决了吗?遗憾的是,我还没有解决它@XardasLordI通过启用nginx容器并通过反向代理代理网络调用来解决它