【问题标题】:CSRF token with url is working but CSRF with form param is invalid带有 url 的 CSRF 令牌正在工作,但带有表单参数的 CSRF 无效
【发布时间】:2020-03-04 00:05:15
【问题描述】:

带有表单参数的 csrf 令牌不起作用。

params = {
                title: screen.getTitle(),
                windowId: screen.getId(),
                filter: filter,
                sort: sort,
                items: items.toString(),
                _csrf : Manh._csrfConfig.value
            }


form.submit({
                url: url,
                params: params
            });

但有网址

url = url + '?windowId=' + screen.getId() + '&_csrf=' + Manh._csrfConfig.value; 

正在工作。 我不想用 url 发送 csrf 令牌。请提出建议。

<oauth>
<error_description>
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
</error_description>
<error>access_denied</error>
</oauth>

【问题讨论】:

  • 您的 ajax 请求中的 headers 属性在哪里?你确定它正在发送带有标头的请求吗?
  • 它在 params 参数中。
  • 但是 params 是 url 参数,标头的设置不同尝试将 params 对象作为标头传递给 tge 请求方法。

标签: ajax extjs csrf csrf-token


【解决方案1】:

这里是工作示例https://fiddle.sencha.com/#view/editor&fiddle/311c

所以基本上在您的代码中,您需要将标头添加到 form.submit 方法

form.submit({
   url: url,
   headers: {
       'X-CSRF-Token': 'Token'    
   },
   params: params //params without token in them
})

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2016-05-08
    • 2012-12-15
    相关资源
    最近更新 更多