2015-09-13 85 views
0

我正在從angularJs發佈到web api的請求。但每次我得到這個錯誤沒有'訪問控制 - 允許來源'標題出現在所請求的資源在web api

XMLHttpRequest cannot load http://localhost:45525/api/account/register. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:45725' is therefore not allowed access. The response had HTTP status code 500. 

我下面這個tutorial

來解決這個問題,我也安裝

Install-Package Microsoft.AspNet.WebApi.Cors 

然後我說

config.EnableCors(); 

裏面WebApiConfig註冊方法。

並且還我加入

[RoutePrefix("api/Account")] 
    public class AccountController : ApiController 
    { 
     private AuthRepository _repo = null; 

     public AccountController() 
     { 
      _repo = new AuthRepository(); 
     } 

     // POST api/Account/Register 
     [EnableCors("*", "*", "PUT, POST")] 
     [AllowAnonymous] 
     [Route("Register")] 
     [HttpPost] 
     public async Task<IHttpActionResult> Register(UserModel userModel) 
     { 
      if (!ModelState.IsValid) 
      { 
       return BadRequest(ModelState); 
      } 

      IdentityResult result = await _repo.RegisterUser(userModel); 

      return Ok(); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      if (disposing) 
      { 
       _repo.Dispose(); 
      } 

      base.Dispose(disposing); 
     } 
} 

在帳戶控制器。但我仍然遇到同樣的問題。

AngularCode

var _saveRegistration = function (registration) { 
    var serviceBase = 'http://localhost:45525/'; 
    _logOut(); 

    return $http.post(serviceBase + 'api/account/register', registration) 
    .then(function (response) { 
      return response; 
    }); 
}; 
+0

是你確定POST正在執行,而不是GET? –

+0

從你說過的話,CORS應該啓用。你可以顯示代碼'AcccountController'。 –

+1

嘗試'[EnableCors(「*」,「*」,「PUT,POST」)]',即刪除方法之間的空間。 –

回答

3

刪除在CORS網方法之間的空間屬性

[EnableCors("*", "*", "PUT,POST")] 
0

我有同樣的問題,但我已經以不同的方式解決了這個問題。

如果按照本教程的步驟,那麼:

  1. 你不需要Microsoft.AspNet.WebApi.Cors
  2. 添加以下到Web.config配置部分爲here

    <system.webServer> 
        <handlers> 
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
        <remove name="OPTIONSVerbHandler" /> 
        <remove name="TRACEVerbHandler" /> 
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
        </handlers> 
    </system.webServer> 
    
相關問題