2017-07-26 205 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