Angular 4 前端中的 CORS 问题与 Google 云端点 运行 一个 go API 后端
CORS issue in Angular 4 frontend with Google Cloud Endpoints running a go API backend
我无法从 Angular 4 前端在云端点后面的 google 云中调用 API 运行。我收到以下错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许访问来源“http://localhost:4200”。响应具有 HTTP 状态代码 403。
我在本地机器上也是 运行 swagger,并且从 swagger 成功调用 API。
我的各种设置如下:
打开API(Swagger规范):
host: MyApp.appspot.com
x-google-endpoints:
- name: MyApp.appspot.com
allowCors: true
GO 服务器 CORS 设置: 我正在使用 "github.com/rs/cors" 库
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"},
AllowedHeaders: []string{"*"},
AllowedMethods: []string{"GET", "PUT", "POST", "HEAD", "POST"},
AllowCredentials: true,
})
Angular 4 个应用程序:
const payloadHeaders = new Headers({'Access-Control-Allow-Origin' : 'http://localhost:4200','authorization':'Bearer *********'});
var url = 'https://MyApp.appspot.com/users/user?u=' + username;
this.http.get(url,{headers:payloadHeaders}).timeout(3000)
.map((response) => {
return response.json();
}).subscribe(
swagger 和 angular 之间的唯一区别可能是它们发出 http 请求的方式……虽然我不确定。 Swagger 起源是 '127.0.0.1:64298' 而 Angular 是 'localhost:4200'
有谁知道我该如何解决这个 CORS 问题?
The Stackdriver log throws: Endpoints management skipped for an unrecognized >HTTP call: OPTIONS /users/user?u=xxxx@yyyy.com
But I think I have taken care of that in GO server itself. So it is a bit >confusing.
谢谢!
我这边犯了一个愚蠢的错误。我错过了 Angular 中的路径组件。现在可以正常使用了。
我无法从 Angular 4 前端在云端点后面的 google 云中调用 API 运行。我收到以下错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许访问来源“http://localhost:4200”。响应具有 HTTP 状态代码 403。
我在本地机器上也是 运行 swagger,并且从 swagger 成功调用 API。
我的各种设置如下:
打开API(Swagger规范):
host: MyApp.appspot.com
x-google-endpoints:
- name: MyApp.appspot.com
allowCors: true
GO 服务器 CORS 设置: 我正在使用 "github.com/rs/cors" 库
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"},
AllowedHeaders: []string{"*"},
AllowedMethods: []string{"GET", "PUT", "POST", "HEAD", "POST"},
AllowCredentials: true,
})
Angular 4 个应用程序:
const payloadHeaders = new Headers({'Access-Control-Allow-Origin' : 'http://localhost:4200','authorization':'Bearer *********'});
var url = 'https://MyApp.appspot.com/users/user?u=' + username;
this.http.get(url,{headers:payloadHeaders}).timeout(3000)
.map((response) => {
return response.json();
}).subscribe(
swagger 和 angular 之间的唯一区别可能是它们发出 http 请求的方式……虽然我不确定。 Swagger 起源是 '127.0.0.1:64298' 而 Angular 是 'localhost:4200'
有谁知道我该如何解决这个 CORS 问题?
The Stackdriver log throws: Endpoints management skipped for an unrecognized >HTTP call: OPTIONS /users/user?u=xxxx@yyyy.com But I think I have taken care of that in GO server itself. So it is a bit >confusing.
谢谢!
我这边犯了一个愚蠢的错误。我错过了 Angular 中的路径组件。现在可以正常使用了。