详解反应本地获取遇到的坑

  

最近在自学本地反应,学习过程中遇到了不少的坑,下面将针对登录这一功能来详细介绍一下以下遇到的两个问题。
  

  

1。在请求数据的时候,一般情况下我们会直接提交内容类型是json数据格式的请求。类似

        fetch (https://mywebsite.com/endpoint/, {   方法:“文章”,   标题:{   “接受”:application/json,   “内容类型”:“application/json”,   },   身体:JSON.stringify ({   firstParam:“yourValue”,   secondParam:“yourOtherValue”,   })   })      

当我开始请求登录接口的时候,发现上面的请求方法失效了,想了好多办法都不知道问题出在哪里,最后试了下抓包,才发现原来请求登录接口的时候,内容类型是应用程序/x-www-form-urlencode,于是我搜了下这方面的知识。我们在提交表单的时候,形式表单参数中会有一个enctype的参数.enctype指定了HTTP请求的内容类型。默认情况下,HTML的形式表单的enctype=应用程序/x-www-form-urlencoded.application/x-www-form-urlencoded是指表单的提交,并且将提交的数据进行urlencode。默认情况下,我们所有的表单提交都是通过这种默认的方式实现的。文档中是有记载的:

        fetch (https://mywebsite.com/endpoint/, {   方法:“文章”,   标题:{   “内容类型”:“应用程序/x-www-form-urlencoded”,   },   身体:“key1=value1& key2=value2 '   }      

2。登录成功后如何获取当标题里面的sessionid的问题。
  

  

详解反应本地获取遇到的坑”>,<br/>
  </p>
  <p>登录成功之后,我们可以打印出上面的反应,若是需要取出上面的sessionid,我们可以采用下面的方法,写法可能比较低,但是可以达到目的</p>
  
  <pre类=//获取sid   var header=response.headers.get (set - cookie”);   var头=headers.split (“;”);   var sessionid;   (var指数=0;指数& lt;header.length;指数+ +)   {   如果(头(指数).indexOf祝辞(“JSESSIONID”);1){   sessionid=头(指数).split ("=") [1];   }   }//保存   AsyncStorage。setItem (sessionid, sessionid);      

3。登录成功之后,后台需要根据sessionid来判断登录状态。当请求的接口是必须登录之后才能获得数据的时候,就不能用传统的写法来请求了.javascript使用卖进行跨域请求时默认是不带饼干的,所以会造成会话失效。那所以在登录请求的时候需要加上凭证:“包括”这个字段。

        fetch (Api。checkLoginSecurity, {   凭证:包括,   方法:“文章”,   标题:{   “内容类型”:“应用程序/x-www-form-urlencoded”,   },   身体:“用户名=' + this.props。用户名+ + this.userPassword及密码=})      

在需要登录后才能获取数据的接口也需要加上

        fetch (url, {   凭证:包括,   方法:“得到”,   })      

此处还要强调一下得到请求和帖子请求,经别人提醒,发现虽然他写了个身体={*},让我误以为是用发布方式,其实的身体只是参数的字段,实际上用的还是得到请求,所以把文章改为得到(默认是得到,所以就不需要写方法),因为得到无法在身体里传参,也不需要头,直接把参数写在URL里,只有帖子才是在身体里传参。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

详解反应本地获取遇到的坑