Angular 4前端的CORS问题,Google Cloud Endpoints运行go API后端

时间:2017-09-29 12:02:04

标签: angular go cors swagger google-cloud-endpoints

我无法从Angular 4前端调用在云端点后面的Google云中运行的API。我收到以下错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:4200”访问。响应的HTTP状态代码为403。

我在本地计算机上也正在大摇大摆,并且从swagger成功进行API调用 我的各种设置如下:

OpenAPI(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 App:

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问题?

  

Stackdriver日志抛出:无法识别的> HTTP调用跳过端点管理:OPTIONS /users/user?u=xxxx@yyyy.com   但我想我已经在GO服务器本身处理过了。所以这有点令人困惑。

谢谢!

1 个答案:

答案 0 :(得分:0)

我的结局有一个愚蠢的错误。我错过了Angular中的路径组件。现在工作正常。