2017-02-08 4 views
0

メソッドは許可されていませんが、私はAngular2の取得値が、私は再び同様のイライラ質問をして申し訳ありません

fetchBattingAverage() { 
    let str = JSON.stringify({"foo": "bar"}); 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 


    // JSON.stringify({ "abc": "def" }) 
    return this._http.post(
     this.baseURL + 'getBatting', 
     str, 
     options 
    ) 
     .map(res => res.json()); 
    } 

のWeb API 2からのWeb API 2へのHTTP POSTリクエストを設定することはできませんよ与えます:Web構成

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="*" /> 
    <add name="Access-Control-Allow-Methods" value="*" /> 
    </customHeaders> 
</httpProtocol> 

Web APIを2.2コントローラ:

[RoutePrefix("api")] 
public class SachinController : ApiController 
{ 
     [HttpPost] 
     [Route("getBatting")] 
     [EnableCors(origins: "*", headers: "*", methods: "*")] 
     public IHttpActionResult Post([FromBody] string countries) 
     { 
      // Do something 
      return Ok() 
     } 

エラーメッセージ:

OPTIONS http://localhost:54094/api/getBatting 405 (Method Not Allowed) 
Response for preflight has invalid HTTP status code 405 

リクエストヘッダ:

OPTIONS /api/getBatting HTTP/1.1 
Host: localhost:54094 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: POST 
Origin: http://localhost:4200 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 
Access-Control-Request-Headers: content-type 
Accept: */* 
DNT: 1 
Referer: http://localhost:4200/ 
Accept-Encoding: gzip, deflate, sdch, br 
Accept-Language: en-US,en;q=0.8 
+0

カスタムヘッダーを削除https://stackoverflow.com/questions/20079813/how-to-make-cors-authentication-in-webapi-2/25758949#25758949 – sideshowbarker

+0

を見てみましょメッセージにつながります: "要求パスのアクセス制御チェックを要求する:いいえ 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースに存在する場合は、リンクに感謝します。 –

+0

したがって、要求のカスタムヘッダーを削除すると、 OPTIONSリクエストを送信しても、「要求されたリソースにAccess Control-Allow-Originのヘッダーが存在しない」というメッセージが表示される場合は、サーバの設定が明らかに期待どおりに機能していないため、その回答の手順をhttps://stackoverflow.com/questions/20079813/how-to-make-cors-authentication-in-webapi-2/25758949#25で試してください。 758949 – sideshowbarker

答えて

0

が明らかに削除する必要があるのWeb.Config内の別のプロパティがあります。

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> <!-- Remove this --> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <httpProtocol> 
    </httpProtocol> 
    </system.webServer> 
関連する問題