我正在使用受 CSRF 保护的 API。所以我需要做一个 get 调用来获取 CSRF 令牌,然后传递相同的令牌来进行 POST 调用。
下面是我尝试的方法,但我总是收到 CSRF 令牌验证失败作为对 POST 调用的响应。
var tryout = new XMLHttpRequest();
tryout.open("GET", "/api/1.0/csrf");
tryout.withCredentials = true;
tryout.setRequestHeader("x-csrf-token", "fetch");
tryout.setRequestHeader("Accept", "application/json");
tryout.setRequestHeader("Content-Type", "application/json; charset=utf-8");
tryout.onreadystatechange = function () {
console.log(this);
var csrfToken = this.getResponseHeader('x-csrf-token');
if(tryout.readyState == 4){
console.log(csrfToken);
tryout.open('POST', '/api/1.0/create');
tryout.setRequestHeader('x-csrf-token', this.getResponseHeader('x-csrf-token'));
tryout.onreadystatechange = function () {
console.log("call 2");
console.log(this.responseText);
};
tryout.send();
}
};
tryout.send();
Run Code Online (Sandbox Code Playgroud)
我怀疑可能是 POST 调用正在启动新会话,因此 CSRF 对该会话无效。
请指导我如何在同一个会话中进行两次 xhr 调用?
我需要验证作为REST API的一部分传递的参数的值.这些参数是一组固定的值.我想过使用一个参数名为key,枚举为值的地图.所以我可以检查REST API中发送的值是否是枚举键之一.
但是我无法在java中创建一个带有String键和枚举值的Map,尝试创建Map然后将put和enum作为值,但它失败了.
class Validation {
enum Type {
INTERNAL,
EXTERNAL
};
}
Map<String, Object> validationMap = new HashMap<String, Object>();
validationMap.put("type", Validation.Type);
Run Code Online (Sandbox Code Playgroud)
这是抛出未定义类型的错误.
我正在使用javascript的setInterval函数,它期望定义一个将定期执行的内联函数.下面是我的代码片段,
setInterval(
function(){_this.getView().setModel( new JSONModel(_this._getRecentRatingsModel()) , "recentRatings")},
interval);
Run Code Online (Sandbox Code Playgroud)
但我抱怨说,我面临jslint违规行为
预期';' 锯 '}'
它期待';' 在_getRecentRatingsModel()之后但是如果我使用; 在那里,setInterval的语法将被破坏.
帮助我如何绕过这个jslint检查.