2016-04-28 11 views
0

私は1.5.5の角度でウェブサイトを構築していて、かなりのURLを(#を付けずに)持ちたいと思っています。にあなたのタグを変更した後html5mode角度の付与の例外

Error: Failed to execute 'replaceState' on 'History': A history state object with URL ' http://home/ ' cannot be created in a document with origin ' http://localhost:8080 '. at Error (native) at Yf.k.url (lib/1.5.5/angular.min.js:47:311)

+0

をあなたはunminified角度LIBからスタックトレースを含めることができればそれが役立つだろうが、私の推測では、それがベースHREFとは何かを持っています一致しません。 ''を試しましたか? – lukiffer

+2

'base'タグはどのように見えますか?このエラーは、 "home"と "localhost"が異なるドメインであるため、クロスオリジン保護によるものです。 – C14L

+1

また、 '.html5Mode(true)'を使っている場合、 '.hashPrefix(...)'は必要ありません。 – lukiffer

答えて

0

:いくつかの他の記事の指示に従って、私はしかし、私は次の例外を取得したindex.htmlに

$locationProvider.html5Mode(true).hashPrefix('!'); 
    <base href="innovationglobal"> 

ベースURLと一緒にルータであることをHtml5modeを追加しました/又はhttps://

を添加することにより、絶対URLまたはパス

<base href="innovationglobal"> 

あなたがページをリロードするとき

<base href="/innovationglobal/"> 

今、ブラウザが現在のパスのためにサーバに要求を送信します:/innovationglobal/

をあなたはそのパス - そして、他のパスあなたを処理するようにサーバーを設定する必要があります角度のあるアプリがブラウザのアドレスバーに表示されることがあります。 /innovationglobal/users/または/innovationglobal/products/detail/など

ユーザーは、表示しているページにリロードするためにF5を押すことができるためです。そして、あなたのAngularアプリから遠ざかり、そのURLのリクエストをサーバーに送信します。

キャッチオールでサーバーを設定する必要があります。アドレスバーのパスがどのようなものであれ、サーバーは角度アプリのindex.htmlで返信する必要があります。

静的なアセット(.jsや.cssのようなファイル)に対しては注意が必要です。 nginxの場合は、次のようになります。

location = /static/ { 
    alias /var/www/static/; 
    try_files $uri $uri/ =404; 
} 
location /innovationglobal/ { 
    root /var/www/innovationglobal; 
    try_files $uri /app/index.html =404; 
} 

使用しているWebサーバーによっては、

0

あなたがベースを使用せずにhtml5Modeを有効にしようとしたことがあり:

$locationProvider.html5Mode({ 
    enabled: true, 
    requireBase: false 
}); 
関連する問題