2017-05-27 92 views
0

我有一個角度2客戶端,資源服務器和身份驗證服務器。直到我今天下午在CORS環境中違反內容安全策略

以下是錯誤的形象我越來越來到戛然而止一切都順利運行

enter image description here

讓我補充一點,我已經看到了有關這幾個問題,並嘗試幾乎所有的規定都無濟於事的解決方案

我也有是假設下面的類爲我提供這一政策違反了覆蓋

public class SecurityHeadersAttribute : ActionFilterAttribute 
{ 
    public override void OnResultExecuting(ResultExecutingContext context) 
    { 
     var result = context.Result; 
     if (result is ViewResult) 
     { 
      if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options")) 
      { 
       context.HttpContext.Response.Headers.Add("X-Content-Type-Options", "nosniff"); 
      } 
      if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options")) 
      { 
       context.HttpContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN"); 
      } 

      var csp = "default-src 'self'"; 
      // once for standards compliant browsers 
      if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy")) 
      { 
       context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp); 
      } 
      // and once again for IE 
      if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy")) 
      { 
       context.HttpContext.Response.Headers.Add("X-Content-Security-Policy", csp); 
      } 
     } 
    } 
} 

但它看起來像是從版本1.1.2升級到1.1.3「Microsoft.AspNetCore.Mvc.Core」後,我的封面已被炸燬。 我如何能避開這個挑戰將是非常的任何想法表示歡迎 感謝

回答

1

你CSP政策需要允許來自https://ajax.aspnetcdn.com內容。因此,嘗試改變這個:

var csp = "default-src 'self'"; 

...這樣的:

var csp = "default-src 'self'; style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com; 

但基於問題引述錯誤消息,似乎Content-Security-Policy頭值越來越已經設置的地方比在部分其他的應用程序代碼。

因此,而不是使用context.HttpContext.Response.Headers.Add,它只是添加另一個標頭,請嘗試使用context.HttpContext.Response.Headers.Set覆蓋現有的值。

如果你這樣做,你也想刪除if條件包裹你設置它的地方。

因此,嘗試改變這個:

if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy")) 
{ 
    context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp); 
} 

...只是這一點:

context.HttpContext.Response.Headers.Set("Content-Security-Policy", csp); 

...所以,在年底一起你有這樣的:

var csp = "default-src 'self'; style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com; 
context.HttpContext.Response.Headers.Set("Content-Security-Policy", csp); 

而且如果沒有按不起作用,那麼你需要在Content-Security-Policy頭文件值爲開始的後端代碼中找到另一個地方克設置,並更改它,所以該值包括style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com

+0

感謝您的協助。我設法通過對您的建議進行一些修改來擺脫錯誤,但是我確實遇到了另一個問題:請求的頁面上的超鏈接不再工作,並且我的帖子請求也無法通過我得到錯誤代碼400這是一個功能性應用程序,直到這個內容策略問題出現。希望你可以在這裏給m提供一些指導 –

+0

這聽起來像是一個不同的問題,所以我想你可能想發佈一個新的單獨的問題 – sideshowbarker