【问题标题】:Framework7 $$.ajax CORS error but not with jQueryFramework7 $$.ajax CORS 错误,但不是 jQuery
【发布时间】:2017-04-09 06:27:04
【问题描述】:

在使用框架 $$.ajax 时与 CORS 错误作斗争数小时后,我决定向社区寻求帮助。

我正在玩 PhoneGap 和 Framework7。我尝试在我的 .local 域上调用 API,但出现 CORS 错误“跨源请求被阻止:同源策略不允许读取位于 http://domain.local/api/call 的远程资源。(原因:CORS 标头 'Access-Control-Allow-原点缺失)。”。我在 .htaccess 中启用了 CORS 标头,当使用任何 REST 客户端调用它时,我可以看到 Access-Control-Allow-Origin "*" 标头作为响应,但 Framework7 $$.ajax 仍然不起作用。我在 ajax 配置中设置了“crossDomain: true”,但还是不行。

当我使用 jQuery $.ajax 时,在浏览器中一切正常,但在 PhoneGap 应用模拟器的移动设备上却不行。

所以我让 jQuery 至少在浏览器中工作,我在响应头中看到 Access-Control-Allow-Origin "*" 标头,但 Framework7 不起作用。

或者也许你们可以建议其他设置PhoneGap + 其他框架来构建应用程序。

任何帮助表示赞赏。

【问题讨论】:

  • but still doesn't work - 修复 CORS 问题后,您会收到哪些错误或消息?听起来您是在说您仍然遇到 CORS 错误,但是 a) 不清楚并且 b) 您不太可能使用一个库遇到 CORS 问题,而另一个库没有 - 最后,它们都使用相同的 javascript从服务器获取数据的方法,因此将遵守相同的规则
  • 感谢 Jaromanda X。所以 Framework7 $$.ajax 会导致 CORS 错误,而 JavaScript jQuery $.ajax 不会。我现在这听起来很奇怪,但这就是我得到的。我使用 jQuery 工作了 6 年,从来没有遇到过这个问题。所以我什至尝试过 XMLHttpRequest()。不幸的是,这也不起作用。我注意到的是,当我使用 jQuery $.ajax PhoneGap 通过一些代理运行它,但当我使用 Framework7 $$.ajax 时它不会。我需要补充一点,所有这些尝试都是在 PhoneGap 浏览器模拟器中完成的。此外,jQuery 可以在浏览器中运行,但不能在移动设备上运行。跳,现在很清楚了。

标签: javascript ajax .htaccess cors html-framework-7


【解决方案1】:

最后我得到了这个工作。所以,长话短说。经过几个小时的尝试,我跑了 5k,洗了个澡,然后从头开始。我添加了每个元素,然后对其进行了测试。现在我有 Framework7 在浏览器和移动设备上工作。我认为这是实现库的顺序。所以现在是:

  1. cordova.js
  2. framework7.min.js
  3. 我的自定义脚本

在我添加的自定义脚本中

document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
function onDeviceReady() {
    // your code
}

我不再收到 CORS 错误。我没有更改服务器上的任何配置。

显然,浏览器版本适用于 .local 域,因为我可以在我的 hosts 文件中设置它。移动版不适用于本地域,但由于我的 API 已经在 .com 域上,所以我不介意。

我希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2011-09-25
    • 2019-08-01
    • 2017-05-06
    • 1970-01-01
    • 2021-07-27
    • 2022-01-21
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多