Php 文件\u获取\u内容不适用于protocolless URL?

Php 文件\u获取\u内容不适用于protocolless URL?,php,Php,像//google.com这样的东西不适用于文件获取内容有没有不需要将协议添加到字符串中的解决方案?您不能将文件获取内容与//google.com一起使用,因为它实际做的是file:///google.com当您在web上执行此操作时它实际上使用的是您当前使用的协议。所以如果你有https://mywebsite.com而你链接到了一些东西,比如//google.com它实际上可以做的就是https://google.com。也就是说,您需要执行文件获取内容('http://google.com

//google.com
这样的东西不适用于
文件获取内容
有没有不需要将协议添加到字符串中的解决方案?

您不能将
文件获取内容
//google.com
一起使用,因为它实际做的是
file:///google.com
当您在web上执行此操作时它实际上使用的是您当前使用的协议。所以如果你有
https://mywebsite.com
而你链接到了一些东西,比如
//google.com
它实际上可以做的就是
https://google.com
。也就是说,您需要执行
文件获取内容('http://google.com');

我认为有必要提供协议来加载包含
文件获取内容的资源。此功能是在服务器上评估的,而不是在使用//进行自动协议检查的客户端浏览器上

为什么不能通过协议


如果您仍然需要根据对服务器的实际请求来决定协议,您可以检查环境变量$\u server a(如果有https,请将https放在那里)或反之亦然。

file\u get\u contents
也可以获取文件(它就是这样做的),因此您必须提供协议,否则它将尝试在本地解析它。此外,它只支持这些协议:您不需要检查服务器上的请求是http还是https。这仅与客户端相关,以避免出现“不安全内容”警告,这就是为什么您首先要使用protocolless URL的原因。请确保您是正确的。但若您的要求是必须使用file\u get\u内容,并且需要根据调用脚本的协议创建远程请求,那个么就需要使用$服务器。我无法想象这种情况,但如果这符合您的要求,您可以使用它。我现在也遇到了同样的问题,我只是好奇,当我想从
/cdn…
获取某些内容时,是否需要预先设置
http
https
。只使用
http
?@KamilLatosinski可以吗?这完全取决于cdn本身。如果它同时接受http和https,那么您可以在html/js源代码中使用
//cdn…
,但是,如果您要获取此服务器端,则需要显式请求http或https,否则它将默认为file