从localhost(而不是CLI)使用Azure功能的Cors

ste*_*erb 21 azure cors azure-functions axios

我们在vue.js应用程序中使用axios来访问Azure功能.现在我们收到这个错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

我们试图以这种方式在函数中设置响应头:

context.res = {
        body: response.data,
         headers: {   
          'Access-Control-Allow-Credentials': 'true',
          'Access-Control-Allow-Origin': 'http://localhost:8080',
          'Access-Control-Allow-Methods': 'GET',
          'Access-Control-Request-Headers': 'X-Custom-Header'
         }
      }
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个错误?

Aza*_*ndi 39

要在不使用CLI并且使用Visual Studio/VS代码时将CORS设置为本地,您需要将local.settings.json文件添加到项目中(如果它不存在).

确保"直接复制到输出"设置为"如果更新则复制"

local.settings.json设置

然后在你的"local.settings.json"中你可以CORS": "*"像这样添加:

{
  "IsEncrypted": false,
  "Values": {

  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)

更多信息:https: //docs.microsoft.com/en-us/azure/azure-functions/functions-run-local

  • 这是行不通的。默认的 VS Azure Function 模板已具有此文件并将 CORS 设置为 *. 但是,如果您尝试从另一个运行 localhost(但端口不同)的网站访问 localhost API,它将无法工作。 (8认同)
  • 这对我有用。将 CORS 添加到 local.settings.json 修复了我在浏览器中遇到的网络错误。删除 CORS 并再次测试会导致错误再次出现。 (2认同)

Nei*_*eil 28

对于v3+以下作品:

ps 请注意, 的位置Hosts与它处于同一水平,Values而不是在它之下(如 azadeh-khojandi 的回答/sf/answers/3364850961/

在本地设置文件中配置 CORS local.settings.json

{
  "Values": {
  },
  "Host": {
    "CORS": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)


ste*_*erb 25

我们得到了它的工作.这是我们的Azure功能中的配置.你去"平台功能"然后"CORS".我们将http:// localhost:8080添加到"允许的起源"列表中,然后一切正常.

  • 我不确定这是否非常安全。任何人都可以在端口 8080 上运行本地托管的应用程序。 (2认同)
  • 问题是关于本地主机的。我遇到了同样的错误,它甚至还没有发布到 Azure。 (2认同)

Mor*_*834 9

对于那些正在执行上述所有操作但仍然没有任何工作的人,可能是您的local.settings.json文件被完全忽略了。不知道是不是因为我用的是v3。

转到项目的属性 -> 调试 -> 应用程序参数 ->

host start --build --port 7071 --cors * --pause-on-error
Run Code Online (Sandbox Code Playgroud)

开始你的申请


小智 7

您可以在函数应用程序中的托管环境中启用 CORS 以添加 Web 应用程序 URL,请参阅下面的屏幕截图。

在 Function 应用中启用 CORS

1

注:允许所有标记为“*”


Qau*_*nMZ 6

有同样的问题。在后端项目的根目录上,有一个文件 local.settings.json。

在该文件中添加了 "CORS": "*" 和 "CORSCredentials": false(以下是示例),mvn clean package -DskipTests=true在 root 和mvn azure-functions:run -DenableDebugazure 函数目录中执行。

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
Run Code Online (Sandbox Code Playgroud)

参考:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=macos