【问题标题】:why do the latest iPhones dislike my Javascript?为什么最新的 iPhone 不喜欢我的 Javascript?
【发布时间】:2021-04-12 02:44:26
【问题描述】:

我可以从我的网络服务器日志中得知,我的一个 Javascript 文件被(某些?)iOS 14 视为“已注入”。我的脚本在单独的环境(命名空间?)中运行。它尝试做 AJAX 失败了,显然是因为它分配了一个与我的网络服务器不匹配的“来源”,所以标准的同源策略禁止该操作。

如果我试图做一些不合时宜的事情,我希望会被这样抓住。但它只是适用于所有其他浏览器的典型 Javascript。特别是,我的 Javascript 像往常一样在其 HTML 页面的头部加载为外部文件

<script type="text/javascript" src="foobar.js?baz"></script>

所有页面文件——包括有问题的 Javascript——都是从同一个站点加载的——http://www.foo.bar

如何从服务器端判断问题所在? (我无法从客户端重现问题 - 特别是我无法访问任何失败的 iPhone。)

编辑 23 - 2021 年 4 月 - 问题在 14.0.3 之后的 iPhone 版本上部分(但不是完全)消失。

【问题讨论】:

  • 为什么最新的 iPhone 不喜欢我的 Javascript? 是迄今为止看到的最好的标题!
  • 顺便提一下,你不需要将尖括号转换为Unicode ✌!
  • @Manas Khandelwal 似乎无论我尝试什么,HTML 代码都不会出现在“预览”中。我终于发现,通过使用 HTML“实体”而不是尖括号,HTML 代码会出现在预览中。直到后来我才发现HTML代码会出现在帖子_even _though _it _didn't _appear _in _the _preview中。我怀疑如果预览与最终帖子的外观完全一样,“奇怪”帖子的出现频率会降低。
  • 您可以像这样将代码包装在 3 个反引号中:``` 如果代码是内联的,则使用单个反引号来包装代码。 . .它只是降价! . . .有关更多信息,您可以阅读以下内容:stackoverflow.com/editing-help#code

标签: javascript environment inject


【解决方案1】:

回答我自己的问题:一旦我将网络服务器设置为使用 https: 而不是 http:,我遇到的问题都消失了。

显然,最新的 Safari 浏览器(截至 2021 年 5 月)背后的基础架构并不完全信任通过 http: 加载的头部脚本,因此将它们隔离在单独的命名空间中,就好像它们被“注入”了一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2015-08-06
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多