使用rel=preload预加载内容出现“headers do not match”错误

7

我正在尝试通过以下方式预加载XML:

<link rel="preload" href="http://xyz.local/at_de/cartware_3dpicture/index/profile/id/5637566859.xml/" as="fetch" type="application/xml"/>

我收到了一个错误信息:

发现 'http://xyz.local/at_de/cartware_3dpicture/index/profile/id/5637566859.xml/' 的预加载文件,但由于请求标头不匹配,未被使用。

我正在尝试预加载的文件通常是通过XHR获取的:

enter image description here

上面的请求标头是来自于预加载,下面的请求标头是来自于原始的XHR。

感谢您的帮助!


6
当使用type="fetch"时,似乎需要设置crossorigin="anonymous"来使用rel=preload(这会使浏览器设置请求头Origin:domain.local)。现在不同的头的问题是我无法强制设置XHR请求中的Origin:domain.local -> headers不匹配。我猜如果我能够强制设置“Origin”头信息,即使XHR是“same-origin”,也可以解决这个问题。 - Michael Leiss
2
谢谢Michael - crossorigin="anonymous"修复了我的问题。 - Matt Montag
它说很多地方crossorigin不需要="anonymous",但这正是解决我的问题! - math0ne
1个回答

2
我遇到了同样的问题,即使添加了CORS头也是如此。在我的情况下,Accept标题是关键性的不同之处。除非它们完全相同,否则Chrome不会使用预加载。您的Accept标题有一些额外的参数,这可能是问题所在。"最初的回答"

他们要是在错误信息中添加头部信息会有多难啊!唉! - Simon_Weaver
我认为我遇到了这个问题,因为在文件预加载和访问它之间,cookie值已经发生了改变。这不容易修复。 - Simon_Weaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接