0
我正在嘗試解決我的WEB API中的CSRF問題。我正在嘗試實施顯示爲here的解決方案。是否可以從外部JavaScript文件調用Razor @function?
從我所知道的,我需要在我的Razor代碼中創建一個@function {...}塊,我已經完成了。 (基本上從文章同樣的功能)
@functions{
public string TokenHeaderValue()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + ":" + formToken;
}
}
然後我有嘗試通過以下調用此方法外部.js文件:
$.ajax({
url: url,
type: "POST",
async: false,
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
headers: {
'RequestVerificationToken': '@TokenHeaderValue()'
},
error: function (response) {
alert(response.responseText);
},
success: function (response) {
result = response;
}
});
我「TokenHeaderValue()」方法從來不會稱爲,此外,我可以在Fiddler中看到「RequestVerificationToken:@TokenHeaderValue()」的字符串是傳遞的內容,而不是「TokenHeaderValue()」的返回結果。
這是怎麼回事?爲什麼不會實際調用「TokenHeaderValue()」?
如果你的JS是不是在你的Razor視圖將無法正常工作,@令牌沒什麼意思在JavaScript中。你可以在你的視圖中有一個內聯腳本,你可以調用它來返回值。 – Lee