OkHttp POST 请求设置 withCredentials 为 True?
Posted
技术标签:
【中文标题】OkHttp POST 请求设置 withCredentials 为 True?【英文标题】:OkHttp POST request set withCredentials to True? 【发布时间】:2019-12-04 00:22:15 【问题描述】:无法通过 Django Rest Framework 令牌授权,因为我无法使用 OkHttp RequestBuilder 设置 withCredentials=true。 (我指的是这个https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)
在 javascript 中使用 axios.post 这工作正常。我无法使用 OkHttp 请求生成器将此发布请求转换为 android。
请求生成器似乎只为请求的 Header 和 Body 提供 setter 方法?
尝试阅读 OkHttp 文档,我也尝试将 withCredentials=True 作为标题发送
Django Rest Framework 后端无法识别令牌,也无法将不记名令牌解析给用户。
如果没有类进行身份验证,
request.user
将设置为django.contrib.auth.models.AnonymousUser
的实例 >,request.auth
> 将设置为None
。
【问题讨论】:
有什么进展吗?我也遇到了这个问题。 ***.com/a/35744388/3123335 看看这个答案。我刚试了一下,效果很好。 【参考方案1】:我在这里假设withCredentials
是一个查询参数。
附加?withCredentials=true
。到 URL 的末尾可能会让事情顺利进行。
完整的示例可能类似于 https://www.example.com?withCredentials=true
。
如果有多个参数,它可能看起来像https://www.example.com?withCredentials=true&otherParam=Stuff
。
【讨论】:
嘿,Matt,withCredentials 是 XHR 属性,表示使用 CSRF 令牌/cookie developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/…。我的理解也是,不建议在 POST 请求中使用查询字符串参数——它应该只用于 GET 请求。 我的错误。我对 XHR 不太熟悉。以上是关于OkHttp POST 请求设置 withCredentials 为 True?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 的 OKhttp 中通过 POST 请求发送 JSON 正文
OkHttpOkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )