2017-10-24 1 views
0

public class UPWebsiteAPIController : ApiControllerの前に[System.Web.Http.Cors.EnableCors(origins: "*", headers: "*", methods: "*")]を追加しました。POSTのデータにするたびにreturn new JsonResult { Data = toReturn };を入力してください。ものは、この機能が完全に実行され、toRerurnオブジェクトを返すことであるが、ブラウザは、エラーコードを取得し500とASP.NET MVCでCORSを有効にする

なしアクセス制御 - 許可原点ヘッダは、要求された リソース

バックエンドに存在しますコード:

 [System.Web.Http.HttpPost] 
    public async Task<System.Web.Mvc.ActionResult> CreateEvent(FormDataCollection formData) 
    { 
     try 
     { 
      (code which works fine) 
      toReturn[0] = HttpStatusCode.OK; 
      return new JsonResult { Data = toReturn }; 
     } 
     catch (Exception ex) 
     { 
      toReturn[0] = HttpStatusCode.BadRequest; 
      return new JsonResult { Data = toReturn }; 
     } 
    } 

Fronendコード:

$.ajax({  
    type: "POST", 
    url: 'http://www.XXX.aspnet.pl/api/UPWebsiteAPI/CreateEvent', 
    data: data, 
    beforeSend: function() { 

     $loading.show(); 

    }, 

    success: function(response) { 
     console.log('sukces'); 
     console.log(response); 

     $loading.hide(); 
     $response.show(); 
     $response.find('.pay-button').show(); 
     $response.find('.pay-link').attr('href', response.Data[1]); 

     $response.find('h2').html("Gratulacje!'); 

    }, 
    error: function(response) { 
     console.log('error'); 
     console.log(response); 
     $loading.hide(); 
     $response.show(); 
     $('.pay-button').hide(); 
     $response.find('h2').html("Przepraszamy..."); 
    } 
    }); 

どうすればよいですか?面白いのは、時には何の問題もなく動作することがあり、時々(しばしば)それらのエラーを取得することです。

答えて

1

あなたのglobal.asax.csファイルに次のメソッドを追加します。

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
     if (HttpContext.Current.Request.HttpMethod == "OPTIONS") 
     { 
      HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE,GET"); 

      HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "content-type,Access-Control-Allow-Origin,authToken, Accept"); 
      HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000"); 
      HttpContext.Current.Response.End(); 
     } 
    } 
+0

それは私を助けなかった – Cezar

+0

トークンベースの認証を使用していますか? –

関連する問題