javascript – Angular GET请求错误,但只适用于safari iOS

栏目: JavaScript · 发布时间: 5年前

内容简介:我很确定这是因为Safari是默认情况下唯一具有阻止“第三方Cookie和其他网站数据”策略的浏览器.实际上,这个问题不应该是Safari iOS的排他性,也应该在OSX上使用Safari.我很确定,如果没有发生在你的MacBook是因为有一天你更改了默认设置的“隐私”.您可以尝试这样做,打开Safari,转到“首选项”,如果您有选项:“阻止Cookie和其他网站数据”设置为“来自第三方和广告客户”,请选择“价格”检查.这是Safari的现代版本中的第一个,也是默认选项.在您的MacBook中,它将如下所

我正在建立一个使用wordpress作为后端的网站,并将angularjs作为前端.我正在使用wordpress json API来获取我的数据到前端.

https://wordpress.org/plugins/json-api/

问题

我使用角度从wordpres json API获取我的数据.我创建了以下服务:

this.getPage = function ( slug ) {
    return $http.get('wordpress/api/get_page/?slug=' + slug)
}

我在控制器中使用这个服务来获取当前页面

HTTPService.getPage('home')
    .success(function ( data ) {
        $scope.page = data.page;
        console.log(arguments);
    })
    .error( function () {
        console.log(arguments);
    })

所以这在所有的浏览器中都可以正常工作,除了safari iOS.在Safari iOS上,如果我记录错误参数,我会得到以下响应:

这是safari调试器,我把我的iphone连接到我的macbook.我得到的错误响应是错误代码0 ..

我迄今为止所尝试过的

我在htaccess文件中设置了“Access-Control-Allow-Origin”*“,但这似乎不起作用.该请求在相同的域上使用相对URL完成,所以我甚至不认为这是问题.

那么any1知道为什么这不适用于safari(仅限iOS)?

提前致谢…

编辑

根据要求提供一些额外信息:

我很确定这是因为Safari是默认情况下唯一具有阻止“第三方Cookie和其他网站数据”策略的浏览器.实际上,这个问题不应该是Safari iOS的排他性,也应该在OSX上使用Safari.我很确定,如果没有发生在你的MacBook是因为有一天你更改了默认设置的“隐私”.

您可以尝试这样做,打开Safari,转到“首选项”,如果您有选项:“阻止Cookie和其他网站数据”设置为“来自第三方和广告客户”,请选择“价格”检查.这是Safari的现代版本中的第一个,也是默认选项.

在您的MacBook中,它将如下所示:

在iOS中,它将如下所示:

只是为了确认这实际上是导致您的问题:将此设置更改为“从不”,清除缓存并尝试再次重现该问题.我相信你将无法再现它.

现在,如果您将其设置为“阻止Cookie和其他网站数据:来自第三方和广告客户”,并且您首先清除缓存,则会再次出现该问题(使用iOS或OSX).在您确认这是您的问题的原因后,请将此设置设置回“从第三方和广告客户”,以便您可以使用默认设置再现和解决问题.

记住,每次你想重新测试这个问题,你将更好地清除Safary的缓存.否则,Safari可能会发现,服务于API的站点可以被信任,您将无法再现问题.所以,只是为了确保,每次你测试这个清除缓存.

我相信,这个问题的根源在于,Safari在确定该主页加载该内容之前,确保该用户与“第三方内容”的页面进行直接交互.

我将需要更多地了解您的项目,以建议一个“最佳”解决方案.例如:最终应用程式是否会与API整合在同一个网域?因为如果是这样,当你去生产时,你不应该有这个问题.我的意思是,如果您正在开发的应用程序将托管在:http://whatever.yourDomain.org和API将成为同一个域(yourDomain.org)的一部分,那么您不应该有这个问题在生产中.

另一方面,如果您需要将API托管在不同的域下,那么您将不得不找到一种“欺骗”Safari的方法.看看这个:

> Safari 3rd party cookie iframe trick no longer working?

和这个:

> http://www.allannienhuis.com/archives/2013/11/03/blocked-3rd-party-session-cookies-in-iframes/

我希望这有帮助.

http://stackoverflow.com/questions/26587400/angular-get-request-error-but-only-on-safari-ios


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery

jQuery

Earle Castledine、Craig Sharkie / SitePoint / 2010-02-28 / USD 39.95

jQuery: Novice to Ninja is a compilation of best-practice jQuery solutions to meet the most challenging JavaScript problems. In this question-and-answer book on jQuery, you'll find a cookbook of ready......一起来看看 《jQuery》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码