Amazon web services 正在缓存API网关GET和POST-怀疑CORS问题

Amazon web services 正在缓存API网关GET和POST-怀疑CORS问题,amazon-web-services,cors,aws-api-gateway,Amazon Web Services,Cors,Aws Api Gateway,我已经在我的AWS API网关中创建了一堆API资源——这些都工作得非常好 我还将定义导出到SwaggerUI,以用于一些用户文档和测试 我已在所有通话中启用CORS,每个通话都按预期工作 我刚刚意识到的问题是-通过招摇过市/邮递员,如果我用GET方法调用某个端点(比如说),它工作正常,然后我立即将调用更改为POST,结果失败,403被禁止-如果我等待5-10分钟,那么POST将工作,GET将失败。。。这就好像Options方法正在被缓存(不确定) 我尝试过在我的Options方法中添加一些标题

我已经在我的AWS API网关中创建了一堆API资源——这些都工作得非常好

我还将定义导出到SwaggerUI,以用于一些用户文档和测试

我已在所有通话中启用CORS,每个通话都按预期工作

我刚刚意识到的问题是-通过招摇过市/邮递员,如果我用GET方法调用某个端点(比如说),它工作正常,然后我立即将调用更改为POST,结果失败,403被禁止-如果我等待5-10分钟,那么POST将工作,GET将失败。。。这就好像Options方法正在被缓存(不确定)

我尝试过在我的Options方法中添加一些标题(包括访问控制最大年龄、缓存控制、过期等),但没有成功

每个API调用都会接收一个API密钥和一个Authtoken,在我更改方法之前,这对于第一个调用(以及其他每个调用,如果是同一个方法)都可以正常工作

通过API网关测试完成这项工作非常好——尽管他们不使用选项(通过Fiddler注意到),但只要我使用Swagger UI或postman测试调用,就会出现这个问题

Fiddler日志并没有真正的帮助,因为它显示了每次调用获取选项,然后路由到GET或POST方法——数据看起来都很好


有什么想法吗?

您使用的是自定义授权人吗?如果是这样,您应该尝试将其上的缓存TTL设置为0,然后再次测试。如果这解决了问题,那么您必须修复从授权人生成的策略


来自授权者的策略在整个API中被缓存。因此,如果您发回的策略只允许调用的方法(比如说调用了GET,并且您发回的策略允许GET方法),那么当您调用POST方法时,您将得到403。您应该在授权者中为客户端令牌构造一个全局策略。然后,整个API中使用相同令牌的任何调用都不必返回Lambda函数,这样可以节省资金和延迟。

您使用的是自定义授权程序吗?如果是这样,您应该尝试将其上的缓存TTL设置为0,然后再次测试。如果这解决了问题,那么您必须修复从授权人生成的策略


来自授权者的策略在整个API中被缓存。因此,如果您发回的策略只允许调用的方法(比如说调用了GET,并且您发回的策略允许GET方法),那么当您调用POST方法时,您将得到403。您应该在授权者中为客户端令牌构造一个全局策略。然后,整个API中使用相同令牌的任何调用都不必返回Lambda函数,这样可以节省资金和延迟。

Postman也不应该调用OPTIONS方法,除非您已将其配置为这样做。Postman也不应该调用OPTIONS方法,除非您已将其配置为这样做。感谢您的输入,我将改变我们的政策,看看它是否有帮助,尽管它看起来确实相关。谢谢你的投入,我将改变我们的政策,看看它是否有帮助,尽管它看起来确实相关。