CDN (Akamai),带有 RESTfull api 和 HTTP DELETE 方法“501 不支持”的原始应用程序

CDN (Akamai), origin app with RESTfull api and HTTP DELETE method "501 not supported"

AngularJS 基于 https://123.45.67.89 is accessed through a CDN (Akamai) network which manages the app's domain name https://www.killerapp.com 的应用程序。 CDN 网络配置为所有 /* 都缓存 TTL 1 天,但 /api/* 的 TTL = 0。/api/* 是原始应用程序的 RESTful API 其中 angularJS 部分使用 HTTP GET、POST 和 DELETE 调用。 GET 和 POST 工作正常但 HTTP DELETE 到 www.killerapp.com/api/orders/00001 returns HTTP 501.

问题:私有 CDN 网络是否应该阻止 HTTP DELETE,或者有办法通过 CDN 的设置修复它?

从您的终端使用 curl 语句尝试请求。也将 akamai headers 添加到其中,这样您就可以看到 501 响应的来源。

通常 POST/DELETE/PUT 请求会从 Akamai 边缘服务器传回原点,所以我怀疑您的应用程序出于某种原因返回了错误响应。查看响应 headers 可能有助于缩小范围。

DELETE 在 akamai 配置中默认被阻止,如果你想通过它,你应该在你的 属性 管理器上创建一个规则(我假设你正在使用 属性 管理器)和向其添加 "Allow DELETE" 行为,您可以通过在 XML:

中搜索此标记来检查它是否已启用
<security:allow-delete>on</security:allow-delete>

一条建议:不要"allow delete"全局,创建一个特定的规则并尽可能地限制。