gpt4 book ai didi

javascript - 不允许使用 ajax DELETE 方法

转载 作者:行者123 更新时间:2023-11-30 09:31:45 26 4
gpt4 key购买 nike

我正在尝试使用 scim 服务删除用户。

当我通过 SoapUI 调用它并 curl 它时它工作但是当我创建 ajax 调用时它返回 405 方法不允许

SOAPUI5

IP: https://localhost:9447//wso2/scim/Users/token_of_user_to_be_deleted

OAUTH2 token : my_token_for_oauth

媒体类型:application/json

curl

curl -v -k --user admin:admin -X DELETE https://localhost:9447/wso2/scim/Users/b228b59d-db19-4064-b637-d33c31209fae -H "接受:应用程序/json"

这既有效又删除了用户。

AJAX 不适合我

$.ajax({
url: 'https://localhost:9447/wso2/scim/Users/token_of_user_to_be_deleted',
type: 'DELETE',
headers: { 'Content-Type':'application/json'},
xhrFields: {
withCredentials: true
},

beforeSend: function (request) {
request.setRequestHeader('Authorization', 'Bearer ' + that.oauth2.loadToken().access_token);
},


success: function() {
console.log("success")
},
error: function () {
console.log("error")
}
});

错误:跨源资源共享 (CORS) 过滤器:不支持的 HTTP 方法:DELETE

最佳答案

浏览器在发送实际请求之前确实命中了一个OPTIONS 请求。此请求包括接受的方法

Access-Control-Allow-Methods: GET, OPTIONS

您的服务器不会在选项响应中发送 DELETE 接受方法,因此您的请求会抛出此错误。

要解决此问题,您需要将DELETE 添加到服务器接受的方法中。在您的服务器设置中

Access-Control-Allow-Methods: POST, GET, DELETE, OPTIONS

选项请求仅在浏览器上发送,因为它仅由浏览器作为安全措施实现。 curl/node/SOAPUI5 不确认此限制,因此可以让你得到你想要的。 (除非服务器在内部配置为阻止某些 header )

更新

正如@jannis 所提到的,值得注意的是,实际请求之前的OPTIONS 请求称为预检请求,该机制通常称为CORS.

您可以通过以下链接阅读更多预检请求(以及一般的 CORS):

关于javascript - 不允许使用 ajax DELETE 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45819091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com