[英]Enabling CORS on Google App Engine Flexible environment PHP (Laravel)
[英]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.