【发布时间】:2014-03-21 20:19:27
【问题描述】:
我知道使用 JSONP thechnique http://en.wikipedia.org/wiki/JSONP 我们可以进行跨域 Ajax 请求。
但是对于这个不算“纯粹和传统”的问题。
我只是想知道本机/混合应用程序是否也适用“同源策略”
http://en.wikipedia.org/wiki/Same-origin_policy
这件事似乎有很多困惑。
我的一个朋友发誓说他用“Ajax”代理将 Sencha Touch 2.3.1 + PhoneGap 3 连接到他的后端,我觉得很难相信(代理应该是 JSONP IMO),或者这只需要特殊的服务器配置因为从不应用同源策略'因为浏览器永远不会参与?
我知道这种问题可能不符合 SO 的精神,但我认为关于这个主题的一个好的答案会帮助很多人,因为我一直找不到答案。
最好的问候@code4jhon
【问题讨论】:
-
我不相信这是可能的,因为来自移动设备的请求的来源是
file://,并且基本上与从桌面打开 html 文档相同。我认为不可能从移动设备上运行任何类型的服务来充当服务器来发送来自file://以外的特定来源的请求@ -
@Dawson Loudon 这意味着从 SenchaTouch + PhoneGap 使用 REST 服务必须使用 JSONP 技术?或者在开发 PhoneGap 应用时如何与后端通信?
-
@Dawson Loudon 到目前为止,我有一个 Java Jersey REST 应用程序和一个 Sencha Touch 2.3.1 + PhoneGap3 应用程序,我想知道什么是优雅的交流方式......
-
如果我可以控制后端,它通常是我要连接的 PHP 脚本,所以我将
allow-origin标头设置为 all 并使用jsonp处理 ajax 请求。如果安全是一个问题,我会使用 https、api 密钥、会话令牌和基本身份验证之类的东西。 -
原生应用不受同源策略的约束(因为它是浏览器功能),并且可以从它们选择的任何地方请求数据。服务器甚至不必意识到这种性质。它只是像往常一样响应请求。
标签: javascript ajax cordova sencha-touch cross-domain