2016-03-08 19 views
0

因此,进出口使用的XMLHttpRequest从铬扩展一些数据发布到我的高致病性禽流感API:在高致病性禽流感访问FORMDATA

var xhr =new XMLHttpRequest(); 
    xhr.open('POST', 'http://my-url.com/signup', true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    let params = {} ; 
    params.username = "username"; 
    params.password = "password"; 
    xhr.send(JSON.stringify(params)); 
    xhr.onreadystatechange = function(response){...} 

似乎只是正常工作(从分析中铬合金调试器的网络选项卡)

现在,在服务器端,从快过来,我本来以为这个数据将在req.params可用,但一些研究使我相信这应该工作:

module.exports = [{ 
    method:'POST', 
    path: '/signup', 
    config:{ 
     payload:{ 
      output:'data', 
      parse:true, 
     }, 
    handler:function(request, reply){ 
     console.log(`signing up user: ${request.payload.username}`); 
     ..... 
    } 
    } 
} 

此然而打印

签约用户:未定义

和切换它来打印一个字符串化request.payload输出:

签约用户:{ “{\” 用户名\“: \ “APA \”,\ “密码\”:\ “APA \”} “:” “}

有内置的高致病性禽流感功能解析这个呢,还是需要” 滚我自己的” ?

回答

1

FormData会将您的有效载荷格式化为multipart/form-data有效载荷。但是你正在设置一个内容类型标头application/x-www-form-urlencoded。它们是完全不同的编码。所以你会混淆hapi的有效负载解析器,了解它接收的有效负载的编码。

删除行:

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

它应该工作即可。

+1

haa!我认为这很奇怪,hapi不会包含一个合适的解析器!不能分析我的疯狂,尽管它可以; P感谢马特! –

相关问题