2017-07-26 16 views
0

私はswaggerを使用して正常に動作するAPiをポストしますが、405問題の原因となる反応するjsmから投稿したときに投稿します。次のように反応するからポストのためReactJSフェッチポスト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" 

: フィドラーは、以下のよう闊歩ためのRAW情報を表示さ

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の問題で、Post、FYIの代わりにHttp Putを更新しました。http://bizcoder.com/posting-raw-json-to-web-api – user2235768

答えて

2

これは、あなたのサーバーにhttp://localhost:3000から来て要求を許可する必要がありCORS問題です。

+0

SwagerのようなRESTクライアントは気にしませんサーバーはそのサーバーと通信することができますが、ChromeのようなWebブラウザーは、サーバーによって許可されたオリジンを確認します。これは、POST要求の前にOPTIONS要求を送信し、サーバーが状況200で応答する必要があります。 –

+0

これには明確ではないが、それはすごくうまくいくので、反応でそれを取ったときに投稿に問題がなければならない? @Akram – user2235768

+0

Corsの問題ではなく、http:// localhost:3000で他のapi呼び出しの前に動作します – user2235768