转发Cookie后,AWS CloudFront返回404

时间:2019-04-10 00:33:13

标签: amazon-web-services amazon-cloudfront aws-elb

我正在尝试为多个服务设置负载均衡器。每个服务都有自己的外部ELB。 由于CORS,我不想将子域用于service1,service2 ...,并且希望摆脱OPTIONS请求。

我正在为此使用CloudFront和Behaviors。网站是SPA。

https://beta.myapp.com  - main page → S3
https://beta.myapp.com/api/service1/v1/* → service1 ELB
https://beta.myapp.com/api/service2/v1/* → service2 ELB

当我设置service1的行为而没有任何转发时,我从我的服务中收到错误-401未经授权。因为它依赖Cookie进行未授权。

设置Forward Cookies-AllWhitelist myapp-api-token*-之后,我开始收到404错误并重新显示到错误静态页面。在服务日志中没有看到我的服务被请求。

Cache Based on Selected Request HeadersQuery String Forwarding and Caching之类的其他选项根本不影响任何事情。

  • 可能是什么问题?
  • 如何在CloudFront中调试或记录路由?

可能很重要的一点是要提到cookie是安全的和HttpOnly。

cookie的示例:

cookie: myapp-api-token=eyJraWQiOiJyRlZYTGpCRVJJRDZ6MVVpSVpDaENVQVczNlRua0FMb3dDQzlHMnBmcG1VPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJiZGYzNjNiOC1jMWM3LTQzNDMtOTc2My0zOTk3ZDFiNTYxZWQiLCJjdXN0b206a2V5U3BlYyI6IkFFU18yNTYiLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9FRzlwSjRsb0giLCJjdXN0b206ZW5jcnlwdGVkUGFzc3dvcmQiOiJBUUVDQUhqa3BxM0pmUzNId0c1XC92cTNicHY4TUdjaWhJZ0hReVFsQk1OY09Ea1JZOHdBQUFIb3dlQVlKS29aSWh2Y05BUWNHb0dzd2FRSUJBREJrQmdrcWhraUc5dzBCQndFd0hnWUpZSVpJQVdVREJBRXVNQkVFREo5b2hwYSt2WnNMdXBQXC9sQUlCRUlBM3RCOUFrRWhjR0hJSFhiSitnXC9DRUZ3REljc3EzaEpBTVlxTVZmS2g1ZmZIVW9BMGp2YzU2NzJGcEpjK3BWbzdTMytZXC9nWVdqMnc9PSIsImNvZ25pdG86dXNlcm5hbWUiOiJDTE9VREZMT1ctdXMtZWFzdC0xOjAxNDE4ZDJhLWJlZGYtNDgzYy05NjFlLWE0YjQ5MjRhNjhkZCIsInByZWZlcnJlZF91c2VybmFtZSI6IkNMT1VERkxPVy11cy1lYXN0LTE6M2VmZjBmYWItN2RiZC00YjhjLTk0YmMtMjZkZDIyODIyY2IyIiwiYXVkIjoiM3A5aHMxc2VrOGo0OXNwbjY2MjNmbWFuMGIiLCJldmVudF9pZCI6IjZiMmEyY2RkLTU3MTAtMTFlOS1hNmU1LTliYTBlYmUzYTkyMCIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTU0NDA2MzY0LCJuYW1lIjoiRGVuaXMgTGlnZXIiLCJjdXN0b206ZW5jcnlwdGVkRGF0YUtleSI6IkFRRURBSGprcHEzSmZTM0h3RzVcL3ZxM2JwdjhNR2NpaElnSFF5UWxCTU5jT0RrUlk4d0FBQUg0d2ZBWUpLb1pJaHZjTkFRY0dvRzh3YlFJQkFEQm9CZ2txaGtpRzl3MEJCd0V3SGdZSllJWklBV1VEQkFFdU1CRUVES081SUZocFwva3UzTjhneXpnSUJFSUE3dm1XdTlnVlg2K0IrdDIrQVppSmFcL0FXVFwvSnZPWEFWMXBGNVhXdFRzVjluaDhWa2ZEQXk5S3BZTGY3bWR0TVkxZGRhSlVyVFJ1ZDhzYTFzPSIsImV4cCI6MTU1NDg1NTQ2MiwiaWF0IjoxNTU0ODUxODYyLCJlbWFpbCI6ImxpZ2RlbmlzQGFtYXpvbi5jb20ifQ.bfFCwH6nN3mAXxwDuwyE7yZMqVwMKnOISP0jwLWZGodZ--oUepPPTvpxWskqxEqpL-Jy_rAki_g319d3opnDKaGVq0FJZjW9EneRxjPHsziUoJHysRSJrj0joCWtYGVzXB7UA6VOlO1CiqGK1i9SMG8k3i6b5EbsDWr84c_wvlVi8yy8M33oJfTLRIbFeDDYwexdT9ZDK9_rcLxnDLL3XjIqlKLj9rCsKOrEIznwZLsCfrBjQBZE8mq9VHUaajFpochyaM1rjL9J8q9-tZTcHnE1ryrLNLvW_vtS1WLic1WVTw9TkCQJCc1HT3KyI-mmqc4fg7Vyw7_RC3DcbiV7Rw

1 个答案:

答案 0 :(得分:0)

我猜您正在将“缓存行为”和“路径模式”用于将用户请求路由到Origin?如果是这样,请检查您的行为的顺序,当您在问题中列出时,将*模式放在第一位,这意味着所有请求都将路由到S3,这将导致404错误,因为您的S3网站没有有该URL路径。