首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨源服务器在Safari v12+ ( MacOS和iOS)上推送额外请求问题

跨源服务器在Safari v12+ ( MacOS和iOS)上推送额外请求问题
EN

Stack Overflow用户
提问于 2019-10-01 22:06:53
回答 2查看 143关注 0票数 1

问题: Safari正在使用推送路径执行请求,但向站点主机发出请求,从而导致404。

场景:服务器推送的跨源资产。资产的主机和站点的主机是不同的域。

Browser: Safari v12+ (也是v13)在MacOS和iOS中都有。

值得注意的是,服务器推送功能自工作,但是Safari向主机提出了这个额外的请求。而且,在安全的v10或v11上也不会发生这种情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-06 16:50:35

我也遇到了这种情况,并确认(通过使用Charles重写),如果链接头使用包含域绝对路径,那么Safari确实会从跨源域加载链接头中的资源。

这种类型的HTTP将在中工作,而不是

代码语言:javascript
运行
复制
HTTP/2 200
content-type: application/javascript; charset=utf-8
... other headers
link: </script.js>; rel=preload; as=script; crossorigin

相反,您需要包含完整的域和协议,如下所示:

代码语言:javascript
运行
复制
HTTP/2 200
content-type: application/javascript; charset=utf-8
... other headers
link: <https://www.example.com/script.js>; rel=preload; as=script; crossorigin

这与大多数服务器推送教程不同,后者的路径绝对来自域根(例如/script.js),但我已经确认它在Safari中正确工作,即使服务器推送响应是针对与HTML页面所在的域不同的JavaScript资源的。

票数 1
EN

Stack Overflow用户

发布于 2019-10-01 22:48:46

场景:服务器推送的跨源资产。资产的主机和站点的主机是不同的域。

除非在非常有限的情况下,否则不能将资源推送到另一个域。服务器必须是此服务器的授权方。基本上,这意味着它会进入相同的IP地址,并由相同的证书覆盖。因此,如果您在www.example.com上,并且在同一台服务器上的static.example.com上有一个单独的切分域,理论上可以推送。然而,在这方面,浏览器支持真的很差。和我真的不推荐。您可以为此使用预加载资源提示,这是更好的理解和支持。

问题: Safari使用推送路径执行请求,但向站点主机发出请求。

根据上面的链接,Safari不支持跨域推送。其他浏览器也不多见。

导致404秒。

这将是有意义的,因为您请求推送的资源在该域中不存在。

值得注意的是,服务器推送功能自工作,但是Safari向主机提出了这个额外的请求。

那你为什么认为它起作用了?

而且,在安全的v10或v11上也不会发生这种情况。

什么事没发生?推?双重下载?两者都有?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58192863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档