单击即可发送2个a​​jax POST请求

时间:2017-07-04 05:12:42

标签: javascript html vue.js

enter image description here

logout(){
  var destroySession='{"token":"'+this.token+'"}'
  console.log("Session Destroy"+destroySession)
  axios.post(eventBus.apiURL+'logout',{
    headers: {
      'Content-type': 'application/json',
    },
    body: destroySession,
  }).then(response=>{
    console.log("RESadas :: "+JSON.stringify(response.data))        
    alert("Logout successfully..!")
    this.$router.push('/')       
  },error=>{
    console.log(error);
    alert("Some Issue for LogOut at Server Side..!")
    
  });
 

  window.localStorage.removeItem('token')
  window.localStorage.removeItem('name')
  this.$router.push('/')
}
<button @click="logout">Logout</button>

我已在vuejs中编写了注销代码,但在点击时它发送了两个POST请求,并且在会话期间,服务器端发生了销毁问题。

1 个答案:

答案 0 :(得分:0)

根据Mozilla Developer Network

  

预检请求

     

与“简单请求”(如上所述),“预检”请求不同   首先通过OPTIONS方法向资源发送HTTP请求   另一个域,以确定实际的请求是否   安全发送。跨站点请求是这样的预检,因为它们   可能会对用户数据产生影响。

     

特别是,如果满足以下任何条件,请求将被预检   条件是真的:

     

如果请求使用以下任何一种方法:

     
      
  •   
  • DELETE
  •   
  • CONNECT
  •   
  • 选项
  •   
  • TRACE
  •   
  • PATCH
  •   
     

或者,除了自动设置的标题之外   用户代理(例如,Connection,User-Agent或任何   其他标头,在Fetch规范中定义的名称为“禁止使用”   标题名称“),请求包括除那些之外的任何标题   Fetch规范定义为“CORS-safelisted request-header”,   以下是:

     
      
  • 接受
  •   
  • 接受语言
  •   
  • 内容的语言
  •   
  • 内容类型(但请注意以下附加要求)
  •   
  • DPR
  •   
  • 下行链路
  •   
  • 保存数据
  •   
  • 视口宽度
  •   
  • 宽度
  •   
     

或者,如果Content-Type标头有   除以下值之外的其他值:

     
      
  • 应用程序/ x-WWW窗体-urlencoded
  •   
  • multipart / form-data
  •   
  • 文本/纯
  •   

<强>更新

请阅读有关如何停用预检请求的答案:Link