javascript – Angular GET请求错误,但只适用于safari iOS
栏目: JavaScript · 发布时间: 6年前
内容简介:我很确定这是因为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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang适用的DTO工具
- 创业公司的经济适用架构师
- Node.js特点和适用场景
- MySQL主流存储引擎及适用场景
- 适用于所有人的领域驱动设计
- [译]介绍适用于 iOS 的 AloeStackView
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Base64 编码/解码
Base64 编码/解码
SHA 加密
SHA 加密工具