Salesforce v55.0 REST API中If-Modified-Since头使用异常咨询
为何Salesforce REST API在If-Modified-Since晚于记录Last-Modified时仍返回数据?
核心问题出在请求头字段名的格式错误:
你提供的请求头中,
If-Modified-Since字段名被错误地添加了双引号("If-Modified-Since")。HTTP规范要求请求头字段名不能包含引号,Salesforce服务器会将这个带引号的字段识别为未知的自定义头,直接忽略If-Modified-Since的条件判断逻辑,因此无论记录的修改时间是否符合要求,都会返回200 OK和完整数据。对比你测试的两种场景:
- 当你将请求头时间改为
Thu, 08 Sep 2022 15:54:11 GMT时得到正确的304响应,说明此时你大概率修正了请求头字段名的格式(去掉了引号),服务器正确识别了If-Modified-Since头,判断记录未在指定时间后修改,返回304。 - 当你将请求头时间提前一小时(此时记录修改时间晚于请求头时间),即使字段名正确,服务器也会返回200 OK和数据,这是符合API文档逻辑的正常行为。
- 当你将请求头时间改为
解决方法
修正请求头格式,确保If-Modified-Since字段名不带任何引号,正确的请求头格式应为:
GET /services/data/v55.0/sobjects/Contact/{id} Content-Type: application/json Authorization: Bearer {access_token} If-Modified-Since: Thu, 08 Sep 2022 16:54:10 GMT
内容的提问来源于stack exchange,提问作者JoshDevs
相关产品推荐
相关产品推荐

