2013-06-20 39 views
1
OPTIONS http://localhost:7514/Employees/testrestricted 401 (Unauthorized) angular.js:10419 
OPTIONS http://localhost:7514/Employees/testrestricted Origin http://localhost:4064 is not allowed by Access-Control-Allow-Origin. angular.js:10419 
XMLHttpRequest cannot load http://localhost:7514/Employees/testrestricted. Origin http://localhost:4064 is not allowed by Access-Control-Allow-Origin. 

我有我的app.js設置這樣既:原產地不被訪問控制允許來源的angularjs和asp.net的MVC允許

var app = angular.module('angular-auth-demo', ['http-auth-interceptor']); 

app.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) { 

    $httpProvider.defaults.useXDomain = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 

    $routeProvider. 
     when('/home', { templateUrl: 'partial-content.html', controller: 'ContentController' }). 
     otherwise({ redirectTo: '/home' }); 
}]); 

有沒有辦法找出如果這是angular或asp.net mvc上的錯誤,因爲我也有cors配置,但我不認爲瀏覽器實際上有機會擊中服務器?

+0

你有沒有找到一個解決方案?我仍然無法找到解決這個問題的方法。 – Pnct

+0

@Pnct什麼似乎是問題?結合這兩個答案爲我解決了這個問題。 –

+0

跨域的工作崗位請求?只有GET可以在跨域使用,不知道爲什麼POST拒絕:/ 選項api.domain聯繫人原始app.domain不被Access-Control-Allow-Origin允許。 angular.min.js:106 XMLHttpRequest無法加載api.domain/Contact。 Access-Control-Allow-Origin不允許Origin app.domain。 – Pnct

回答

1

請求正在到達服務器,因爲服務器正在返回401。請參閱Chrome開發工具或Firebug中的網絡選項卡。假設您已經有Access-Control-Allow-Origin標題,則可能需要指定Access-Control-Allow-Headers標題並將Content-Type作爲其值。也許發佈你的CORS配置/代碼?

3

我有一個類似的問題,使用字體真棒跨域 - 特別是與Firefox。

直接用你需要訪問的資源添加一個web.config用它解決了我的問題。

<configuration> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
</configuration> 
0

以下解決方案爲爲: http://forums.asp.net/t/1885459.aspx

protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      if (this.Context.Request.Path.Contains("signalr/negotiate")) 
      { 
       this.Context.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
       this.Context.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept"); 
       this.Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); 
       this.Context.Response.AddHeader("Access-Control-Allow-Credentials", "true"); 
      } 
     } 
相關問題