xCss / JsonBird

🐣A remote data interface proxy service | 一个远程数据接口代理服务
https://bird.ioliu.cn
MIT License
428 stars 73 forks source link

V2 POST 请求异常 #35

Open neil-pan-s opened 3 years ago

neil-pan-s commented 3 years ago

请求: $.ajax({ url: "https://bird.ioliu.cn/v2/?url=https://dataapi.joinquant.com/apis", type: 'POST', data: JSON.stringify({ "method": "get_concepts", "token": "5b6a9ba1b2f072b726667f2f", "code": "sw_l1", }), }

响应: error: invalid character '%' looking for beginning of value

neil-pan-s commented 3 years ago

@xCss 此问题我fork了一个版本 已经解决了 方便的话 请核查下

问题原因: 所有POST数据 被统一设置到requst的参数form中,而对于JSON数据未区分判断设置到 request的参数body中

问题代码: https://github.com/xCss/JsonBird/blob/46cbb69b4b89cea17439a0925b0f3c12a1b22388/utils/utils.js#L74

修正代码 :

if (method === 'POST') {
    if (headers['content-type'].includes('application/x-www-form-urlencoded')) { 
        config['form'] = params; 
    } else if (headers['content-type'].includes('application/json')) { 
        config['body'] = JSON.stringify(params);
    } else {
        config['body'] = params;
    }
} else {
    config['url'] = config['url'] ? `${config['url']}?${qs.stringify(params)}` : (url?`${url}?${qs.stringify(params)}`:null) ;
}