如何从 HTML 发送 DELETE 请求?

How can I send a DELETE request from HTML?

我正在为 Cloudfront/S3-fronted 存储桶创建一个 HTML 接口,我希望能够通过该接口删除其中的对象。我可以编写 GET 和 POST 请求来列出和查看存储桶中的对象,但我不知道如何编写删除请求。

private String buildURL(String endpoint) {
    String secret    = 'some_secret';
    Datetime dt      = Datetime.now();
    Long longTime    = dt.getTime();
    Long expiryLong  = (longTime / 1000) + 10;
    String url       = 'https://' + cf + endpoint +
                       '?Prefix=' + user_id;
    String expiry    = String.valueOf(expiryLong);
    String policy    = policy(url, expiry);
    String policyEnc = EncodingUtil.base64Encode(Blob.valueOf(policy));
    String rPolicy   = cfReplace(policyEnc);
    Blob mac         = Crypto.generateMac('HMACSHA1',
                                          Blob.valueOf(rPolicy),
                                          Blob.valueOf(secret));
    String signature = cfReplace(EncodingUtil.base64Encode(mac));

    return 'https://' + cf + endpoint +
           '?Prefix=' + user_id + '&Policy=' + policyEnc +
           '&Signature=' + signature + '&Key-Pair-Id=' + keyPairId;
}

如果这是我用来生成 URL 以查看对象的方法,我如何将其更改为删除请求并将其附加到 <a href... 标记?

你可以使用 ajax.

<a href="test.php" onclick="sendDelete(event)">test</a>
<script>
    function sendDelete(event){
        event.preventDefault();
        xhttp.open("DELETE", this.href, true);
        xhttp.send();
    }
</script>

很遗憾,可能无法将其附加到 href object。表单中的元素只能执行POST and GET only.。您可能必须手动构建 header 的删除方法(在服务器端提交表单)或使用 HTTP 库来完成操作。