在加油请求中正确设置Cookie

时间:2019-10-16 11:32:04

标签: android cookies fuel

我试图在成功认证后将cookie设置为所有get或post请求。身份验证请求以格式{p>的List { ForEach(recipeData) { recipe in NavigationLink(destination: DetailView(recipe: recipe)) { RecipeCard(recipe: recipe) .cornerRadius(20) .shadow(radius: 10) } } } 标头值返回响应

Set-cookie

对于Web应用程序,我无需设置任何内容,xhr请求会自动处理附加的cookie。该cookie还负责识别后端用户。我在某处读到cookie只是以[accesstoken=sample_token; Version=1; Comment=secured; Domain=test.com; Max-Age=172800000; Expires=Mon, 07-Apr-2025 10:55:18 GMT; Path=] 作为键值的标头。因此,成功通过身份验证后,将从使用{p>给出的格式的响应标头中读取Cookie标头

Set-Cookie

接下来,此值将作为标头附加到每个后续请求中。

var cookeis = response.headers.get("Set-Cookie").toString()

如果我在下面给出的任何发布请求中打印标题,我都可以看到标题正在发送

fun _POST(ctx: Context, path: String, query: List<Pair<String, String?>>): Request {
  var fuel = Fuel.post(ctx.getString(baseID)+path, query)
  val accesstoken = getCookie(ctx)

  when(accesstoken!=null){
    true ->  fuel = fuel.set(com.github.kittinunf.fuel.core.Headers.COOKIE,accesstoken)
    false -> {}
  }
return fuel
}

这将打印先前设置的相同cookie-

val (request, response, result) = _POST(this@MainActivity, getString(R.string.API_MY_DATA), listOf("date" to currentDate))
                .also { println(it.headers.toString()) }
                .response()

,但是服务器返回400响应状态。相同的api也用于使用[accesstoken=sample_token; Version=1; Comment=secured; Domain=test.com; Max-Age=172800000; Expires=Mon, 07-Apr-2025 10:55:18 GMT; Path=] 库开发应用程序。在那里,xhr请求会自动处理cookie管理。

注意:我无权访问后端。

1 个答案:

答案 0 :(得分:0)

我获得了用于发送单个传入Cookie的这段代码:

// response being from a previous Fuel POST
val cook = response.headers["Set-Cookie"].first()

Fuel.get("https://mundraub.org/node/add/plant").header(Headers.COOKIE to cook)
.responseString { request2, response2, result2 ->  ...  }