如何在CORS
我尝试在使用CSRF token validation failed
的不同服务器上的端点上执行POST
请求时遇到cors-anywhere
错误。主要是因为我传递给cors-server的CSRF令牌被缓存,因此验证失败。
我已阅读以下Stack Overflow链接 - Similar issue。事实证明我的问题与链接中的问题相同,但由于该链接不包含任何解决方案,我在这里问它。
请帮忙。
编辑:-
$.ajax({
async: false,
crossDomain: true,
data: batch_request,
url: "://......api.s4hana.ondemand:xxx/sap/opu/odata/sap/API_MKT_CONTACT_SRV;v=0002/$batch",
type: "POST",
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic xxxxxxxxxxxxxxx");
xhr.setRequestHeader("X-CSRF-Token", "xxxxxxxxx");
xhr.setRequestHeader("Content-Type", "multipart/mixed;boundary=batch");
},
success:function(response) {
console.log("Succesfully added new contacts");
console.log(response);
},
error: function (error) {
console.log("Error");
console.log(error);
}
});
我使用POSTMAN进行了GET调用,并从服务器中检索了CSRF令牌。现在,我已经在AJAX调用中硬编码了令牌。我这样做时收到以下错误 -
回答如下:CSRF验证取决于匹配与请求关联的两个令牌。通常,一个在请求本身,另一个存储在与cookie请求相关联的会话中。
由于您正在浏览一个简单的代理,因此您自己是匿名的,并且没有与该请求关联的会话。
如果您想解决这个问题,那么您需要编写自己的服务器端代理,以便按用户维护会话。