2011-11-04 17 views
23

ho convalidato il mio sito web utilizzando validator.w3.orgHTML 5 validazione W3C

'riportato il seguente errore:

Line 5, Column 67: Bad value X-UA-Compatible for attribute http-equiv on element meta. 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" > 

Se non comprendono quel tag META, che tutti i visitatori potranno vedere IE9 il mio sito web in modalità Quirks e voglio impedirlo.

Qualsiasi aiuto sarebbe molto apprezzato!

+0

"I visitatori IE9 vedranno il mio sito Web in modalità Quirks" ... ne sei sicuro? –

+2

Sì. Senza quel meta tag, la modalità documento predefinita è impostata sulla modalità Quirks. Ho provato questo su diversi computer. –

+0

Credo di aver bisogno di leggere di più perché pensavo che fosse la modalità "IE9" per impostazione predefinita. –

risposta

12

Si può sempre mettere l'impostazione X-UA-Compatible nelle intestazioni HTTP effettivi invece. Il modo in cui lo fai dipende dal server Web che stai utilizzando e dal framework sul lato server che utilizzi.

+0

Sto usando ASP.NET MVC 3. Potresti darmi qualche esempio di codice? Grazie! –

+0

@ šljaker - Non ho familiarità con ASP.NET MVC in particolare, ma in C# si trova sulla falsariga di 'Response.AppendHeader (" X-UA-Compatible "," IE = edge, chrome = 1 ");' – Alohci

+2

È possibile aggiungerlo anche alla sezione web.config system.Webserver> httpProtocol> CustomHeaders. – ScottE

8

Devi solo accettare il fatto che se si desidera il supporto IE, è necessario rinunciare al punteggio di convalida perfetto.

Va tutto bene, però, validity != quality

+1

è possibile impostareroba xua questo potrebbe mantenere la validità. – RedRoosterMobile

+0

Secondo [questo collegamento] (http://blog.yjl.im/2011/01/bad-value-x-ua-compatible-for-attribute.html), questo non funziona come previsto. – Benjamin

12

Stesso problema qui, ma la mia soluzione è quella di aggiungere la seguente riga al mio file .htaccess:

Header set X-UA-Compatible "IE=edge" 

grandi opere per me ...

2

Per i ragazzi utilizzando ASP.NET MVC

Un'opzione è utilizzare il filtro azione su controller/azioni. Questo rallenta le risposte dal server un po 'ma non conosco i numeri esatti. Ma è un modo pulito per farlo:

/// 
/// Represents an attribute that is used to add HTTP Headers to a Controller Action response. 
/// 
public class HttpHeaderAttribute : ActionFilterAttribute 
{ 
    /// 
    /// Gets or sets the name of the HTTP Header. 
    /// 
    /// The name. 
    public string Name { get; set; } 

    /// 
    /// Gets or sets the value of the HTTP Header. 
    /// 
    /// The value. 
    public string Value { get; set; } 

    /// 
    /// Initializes a new instance of the class. 
    /// 
    /// The name. 
    /// The value. 
    public HttpHeaderAttribute(string name, string value) { 
     Name = name; 
     Value = value; 
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext) { 
     if(!filterContext.HttpContext.Response.Headers.AllKeys.Contains(Name, StringComparer.OrdinalIgnoreCase)) 
      filterContext.HttpContext.Response.AppendHeader(Name, Value); 
     base.OnResultExecuted(filterContext); 
    } 
} 

Tuttavia, il modo assolutamente migliore e più pulito per me sta usando web.config. Mettete questo codice in <system.webServer> elemento:

<httpProtocol> 
    <customHeaders> 
    <!-- 
          http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ 
          Uncomment to serve cross-domain ajax requests 

          <add name="Access-Control-Allow-Origin" value="*" /> 
          --> 
    <!-- 
          Force the latest IE version, in various cases when it may fall back to IE7 mode 
          github.com/rails/rails/commit/123eb25#commitcomment-118920 
          Use ChromeFrame if it's installed for a better experience for the poor IE folk 
          --> 
    <add name="X-UA-Compatible" value="IE=Edge,chrome=1" /> 
    <!-- 
          Allow cookies to be set from iframes (for IE only) 
          If needed, uncomment and specify a path or regex in the Location directive 

          <add name="P3P" value="policyref=&quot;/w3c/p3p.xml&quot;, CP=&quot;IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT&quot;" /> 
          --> 
    <!-- A little extra security (by obscurity) --> 
    <remove name="X-Powered-By" /> 
    </customHeaders> 
</httpProtocol> 

Ovviamente questo funziona solo in IIS7 +.

HTH

4

Per le persone che utilizzano PHP, il modo per passare questo parametro attraverso la funzione di intestazione in PHP:

header('X-UA-Compatible: IE=edge,chrome=1'); 

Ecco un un post with code + explanation.

5

La soluzione è molto semplice e il tema può includere questo facile in funzione dei modelli basta aprire/templates/il modello/warp/sistemi/themes/head.php

da

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

a

2

Hai provato a non fregare quello che i validatori HTML dicono del tuo codice? Questo di solito funziona per me.