繁体   English   中英

在Google App Engine灵活环境中启用CORS

[英]Enabling CORS in Google App Engine Flexible Environment

我在为使用Google App Engine和灵活环境托管的ASP.NET CORE应用程序启用CORS支持时遇到了问题。

使用axios库的每个AJAX请求都会导致以下错误...

通过CORS策略已阻止对来自源“ http:// localhost:8080 ”的“ https:// api。[something] .services / request ”处的XMLHttpRequest的访问:不存在“ Access-Control-Allow-Origin”标头在请求的资源上。

以下是Web api上CORS的配置:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => 
    options.AddPolicy("MyPolicy", 
        builder =>
        {
            builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials();
        }));

   // ...

   services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();

        System.Environment
              .SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS",
                          Path.Combine(Directory.GetCurrentDirectory(),
                          Configuration["GAE:Credentials"]));
    }
    else
    {
        app.UseHsts();
    }

    // ...

    app.UseCors("MyPolicy");
    app.UseHttpsRedirection();
    app.UseMvc();
}

通常,当resource1对另一个resource2进行跨域HTTP请求而没有resource2的处理程序返回包含值http:// resource1的Access-Control-Allow-Origin:响应标头时,通常会获得这种类型的CORS错误。

考虑到这一点,需要在App Engine中部署的应用程序App.yaml文件中适当设置http标头处理程序配置。 大多数浏览器使用XMLHttpRequest对象发出跨域请求,并注意插入正确的标头并处理与服务器的CORS交互。

以上所有这些信息均适用于App Engine标准而非App Engine Flex环境。 这是因为默认情况下,App Engine Flex上不允许CORS请求 但是, 您可以通过将此“ x-google-endpoints”添加到您的API配置文档中来允许CORS请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM