【发布时间】:2018-02-05 01:20:32
【问题描述】:
我目前在一个开发 Web 应用程序的 2 人团队中。我正在开发客户端应用程序,而我的合作伙伴在一个单独的项目中开发后端。我的合作伙伴已将他的项目上传到我们的域 (https://api.example.com),并坚持只对后端的调用应通过 https。
当我开发我的客户端应用程序时,我通过 localhost 提供服务。问题是 localhost 默认通过 http 提供服务。我不知道如何通过 https 调用后端。
我正在通过 Angular 4 CLI 开发我的客户端应用程序。我曾尝试通过自签名证书通过https://localhost 为我的应用程序提供服务,但这样做时我遇到了可怕的问题,因为 Chrome 检测到的证书不是真实的。
所以我被困住了。通过 https 调用我们的开发服务器的最佳方式是什么?或者,我应该这样做吗?出于开发客户端应用程序的目的,合作伙伴是否应该向我提供不同的 api 端点?我们应该如何共同努力解决这个问题?
【问题讨论】:
-
您可以使用其他方式(例如 cURL)连接到 API 端点吗?如果您想从客户端代码发出 GET 请求,我不明白为什么您的开发服务器必须是 https。只需在客户端代码中使用 API 的完整地址,它应该可以工作
-
服务器只接受通过 https 的调用。当我调用服务器时:api.example.com/api/auth,chrome 会回复两条消息。第一个是 CORS 错误,指出“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”。第二个是来自服务器的 401 未授权。我的合作伙伴是否应该更改服务器设置以使服务器接受这些请求?对安全有何影响?
-
所以我可以通过的唯一方法是如果我从 https 提供我的客户端应用程序。这是正确的方法吗?如果是这样,我如何让浏览器相信我的证书是有效的?
-
是的。 CORS 错误在您的服务器端。您需要使服务器能够接受来自其他站点的请求,即在这种情况下是您的开发服务器
-
那么开发服务器会是localhost:4200吗?还是我真的应该购买该网站所在的开发服务器,例如 dev.example.com?
标签: api https cross-domain