web-dev-qa-db-ja.com

HTML 5w3c検証

Validator.w3.orgを使用して自分のWebサイトを検証しました

次のエラーが報告されました。

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" >

そのMETAタグを含めないと、すべてのIE9訪問者が私のWebサイトをQuirksモードで表示するので、それを防ぎたいと思います。

どんな助けでも大歓迎です!

23
šljaker

代わりに、いつでもX-UA-Compatible設定を実際のHTTPヘッダーに入れることができます。これをどのように行うかは、使用しているWebサーバーと、使用しているサーバー側フレームワーク(ある場合)によって異なります。

12
Alohci

ここでも同じ問題がありますが、私の解決策は、.htaccessファイルに次の行を追加することです。

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

私にとっては素晴らしい作品です...

12
GreenOrk

IEのサポートが必要な場合は、完全な検証スコアを放棄する必要があるという事実を受け入れる必要があります。

でも大丈夫です、validity != quality

8
Madara's Ghost

解決策は非常にシンプルで、テーマはこれを機能テンプレートに含めることができます。/templates/YOURTEMPLATE/warp/systems/themes/head.phpを開くだけです。

から

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

<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

PHPを使用している場合、このパラメーターをPHPのヘッダー関数に渡す方法は次のとおりです。

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

これが コード+説明付きの投稿 です。

4
Lea Cohen

ASP.NET MVCを使用している人向け

1つのオプションは、コントローラー/アクションでアクションフィルターを使用することです。これにより、サーバーからの応答が少し遅くなりますが、正確な数はわかりません。しかし、それはそれを行うためのクリーンな方法です:

///
/// 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);
    }
}

しかし、私にとって絶対に最善で最もクリーンな方法は、web.configを使用することです。このコードを<system.webServer>要素に入れます。

<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>

明らかに、これはIIS7 +でのみ機能します。

HTH

2
mare

HTMLバリデーターがあなたのコードについて言うことを気にしないようにしたことがありますか?それは通常私にとってはうまくいきます。

2
Okonomiyaki3000