4

我正在使用 PhoneGap 构建一个移动应用程序,我需要它来适应我的服务 RESTful api。

基本上,如果我想检索/删除/更新/检查/(非幂等操作)资源,则通过 jQuery 的 ajax 方法向 http://example.com/resource/:id 发出 GET/DELETE/PUT/HEAD/ POST请求支持的。这就是我遇到问题的地方。

由于PhoneGap 保存文件并在本地提供它们(例如:file://file.html),我将在ajax 调用中遇到跨域问题。此外,我了解 JSONP 基本上是将脚本插入到文档中,因此是一种请求方法的解决方案

这里有一些想法:

  1. 不是请求 JSON 或 JSONP 数据类型,而是请求 HTML 工作,然后将文档响应解析为 JSON 对象?
  2. 对于每个请求,在页面中创建和删除一个 iFrame,如这张海报Using PUT/POST/DELETE with JSONP and jQuery(感觉肮脏和不雅)
  3. 带有用户名/密码或令牌的某种形式的服务器端 CORS 与请求一起发送以允许这样做(我首先在 iOS 上推出)
  4. 其他一些我无法创造性地使用的策略。

这个问题最优雅的解决方案是什么?欢迎使用插件。

TL;DR:如何为不同 HTTP 方法的 $.ajax 请求添加跨域支持?

4

1 回答 1

5

您必须在 PhoneGap 属性中将您的服务器列入白名单。默认情况下,PhoneGap 会限制对外部站点的访问,以防止出现安全问题。PhoneGap 没有标准 http 托管站点等跨域问题。阅读此处了解详细信息: http: //docs.phonegap.com/en/2.1.0/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide

于 2012-10-25T17:21:11.393 回答