我在Rails中有一个运行Angular 6应用程序的联系页面,
<% content_for :content_title, "Contact Us" %>
<% content_for :metatags do %>
<!-- This is to get rid of "Zone already loaded error" from a combination of Angular and Turbolinks' doing-->
<meta name="turbolinks-visit-control" content="reload">
<% end %>
<% content_for :scripts do %>
<%= javascript_pack_tag 'contact',
"data-turbolinks-track": "reload" %>
<% end %>
<%= render "pages/layout" do %>
<% content_for :title, "Contact Us" %>
<div class="divider"></div>
<div class="container" style="max-width: 800px;">
<div class="section">
<div class="card-panel">
<contact>Loading...</contact>
</div>
</div>
</div>
<% end %>
从表面上看一切正常,但是我观察到以下行为,
但是,
从其他页面导航到/ contact会导致两次请求/ contact ,
从/ contact导航到根路径/会导致两次向/ 发送请求,
随后的请求又可以了。
我敢肯定这与turbolinks有关,但是我对它的理解还不够,无法确切地了解这里发生的事情。
添加data-turbolinks =“ false”解决了/ contact重复请求的问题,但是由于离开/ contact而导致重复请求仍然存在。
<%= link_to "Contact", contact_path, data: { turbolinks: false } %>
另一个观察,与“ Accept”标头有关。对于普通的单个请求,“ Accept”标头为
"accept": text/html, application/xhtml+xml
对于重复的请求,第一个标头是
"accept": text/html, application/xhtml+xml
第二个标头是
"accept": text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
如果有人可以启发我了解这里发生的事情,我将不胜感激。在Chrome和Safari上都可以观察到此行为,在Heroku上的生产版本中也可以观察到此行为,因此它不仅限于开发设置。