2017-07-26 200 views
0

我正在使用swagger来发布工作正常的APi,但是当我从反应j​​sm发布它会导致405问题。 提琴手出现招摇的原始信息如下:ReactJS fetch post API 405问题

POST http://localhost:7100/api/test/submit?guid=17327026-4348-4ce9-aceb-5774c3a724bf HTTP/1.1 
Host: localhost:7100 
Connection: keep-alive 
Content-Length: 14 
Origin: http://localhost:7100 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 
Content-Type: application/json 
Accept: */* 
Referer: http://localhost:7100/swagger/ui/index 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en,en-US;q=0.8,zh;q=0.6,zh-CN;q=0.4 
Cookie: ASP.NET_SessionId=yzdydpdimqvgpvejykzjqqqb; .ASPXAUTH=dWLGc_XQvl3qTNrEJXsRyk3w-tXBSFeXKC0bIUDzLDLFJi5kbSAt_hcJXQs0-pfz7uVm-VJ27ZGAbN8eErCNV-Wozn3D1ZbHD7ONNN5VCMjT_Joyz_1aIcTZLR401s0TtC4Br1sRlerv0zX4F4xnDLhrIm5YKkGfZj2aZzDgc-KjNPVWY1SEC6k2XqPq54vo9_HUvudihHGlneNx1n2JlodvFxAeYudKnUSBRWpp2rRAx94uF7KmmP5BQoTmBTTq1qKSv98YiPToicePFR32d9yk1Uw1qcFrnkKD2zKOCuJByNgCLN_eC5dOmdLKfPCekciEJ16KfeYg8XeApIf13vCrtGOy-L2EXibWuEjUjKCrUy8sfYTGNZbxDffTg9gNOn7-nfyR5hKLYDM0CxfmENV7S0ExTSFyGhsR5aqqB3oXq3A_i8ENabgGMy_tFyor06S7_vrUUcDlS2hFgsxWzgMrRUdVIlohHK2-slPdbhwuUKIZXKKiSQijwH0RskwF-l8RyVe_0VCcCVipk4MXtncDvrubmEW09LWeOycyc0wc1BmMHL9AATpBHA6WBNLEaMGS9-x-RhFC5YNJW1KtetmlXiaKmiX9L-2wWhVRgjlhmfjtRPjxlVvW1GxyeKC-JOlSPnY6DInNM-qa2dcZjdaoffdnLBvzKTHkJNwzUSZw8fN-Vz6SVmURMtpEQAKmxloNvw 

"test working" 

的职位从如下反应:

OPTIONS http://localhost:7100/api/test/submit?guid=17327026-4348-4CE9-ACEB-5774C3A724BF HTTP/1.1 
Host: localhost:7100 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: POST 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 
Access-Control-Request-Headers: content-type 
Accept: */* 
Referer: http://localhost:3000/?testId=17327026-4348-4ce9-aceb-5774c3a724bf 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en,en-US;q=0.8,zh;q=0.6,zh-CN;q=0.4 

我相信一些错误的下面取出后的功能,有没有可能解决它,那么RAW信息可以与第一个相同。

onFormSubmit(Result) { 
    fetch("http://localhost:7100/api/test/submit?guid=" + "17327026-4348-4CE9-ACEB-5774C3A724BF", 
     { 
     method: 'POST', 
     // headers: {'Content-Type':'application/x-www-form-urlencoded'}, 
    headers: {'Content-Type':'application/json'}, 
    //  contentType: 'application/json; charset=utf-8', 
     // body: JSON.stringify(result) 
     body: "test working" 
    }) 
     .then((response) => { 
     console.log(response.ok ? 'success' : 'error'); 
     }) 
     .catch(function (error) { 
     console.log('catch error'); 
     }); 
    } 
+0

问题出在Cors问题上,更新Http Put而不是Post,FYI http://bizcoder.com/posting-raw-json-to-web-api – user2235768

回答

2

这是一个CORS问题,您需要允许请求从http://localhost:3000在正在添加的服务器你。

+0

Rager客户端如Swager不在意是否服务器允许它与它进行通信,但像Chrome这样的浏览器将验证服务器是否允许该来源,这是通过在您的POST请求之前发送OPTIONS请求来完成的,服务器必须以状态200作为响应。 –

+0

对此并不清楚,它在swagger上工作,所以在获取响应时必须有后期问题? @Akram – user2235768

+0

不是Cors的问题,它可以在之前的其他api调用中使用http:// localhost:3000 – user2235768