$.ajax POST 返回 "status" :403, "statusText" : "Forbidden" 科尔多瓦安卓



我正在用jquery.mobile-1.4.3.js和cordova 3.5.0开发Android phonegap应用程序。

我正在为web服务调用$ajax。下面是一个代码片段。

 $.ajax({
        type: 'POST',
        data: LoginData,
        crossDomain:true,
        dataType : 'json',
        timeout: 50000,
        url: 'https://dsp-wasatchtechies.cloud.dreamfactory.com/rest/user/session?app_name=XXXXX',
        success: function(data) {

            console.log(' SESSION' + JSON.stringify(data));
        },
        error: function(data) {
            //ActivityIndicator.hide();
            console.log('ERROR : SESSION' + JSON.stringify(data));
            //ShowAlertMessage('There was an error while SESSION');
        }
    });

它以前工作得很好,但现在它的反应是:

  [INFO:CONSOLE(155)] "ERROR SESSION{"readyState":4,"responseText":"","status":403,"statusText":"Forbidden"}", source: file:///android_asset/www/js/index.js (155)

这个代码怎么了?为什么它不起作用?如有任何帮助和建议,将不胜感激

提前谢谢。

  1. 确保服务器代码返回允许从其他站点访问的CORS头:

例如:标题("访问控制-允许原点:*");

  1. 确保"ModSecurity"在您的服务器上被禁用(如果您有cPanel访问权限,您应该能够通过cPanel/Security或类似的方式进行访问)

  2. 确保您安装了cordova白名单插件(对于cordova v5.0.0之前的版本,请使用"遗留"插件):

    $cordova插件添加cordova插件旧版白名单

  3. 在您的cordova config.xml中设置一个非常开放的白名单:

    <允许意图href="*">

    <访问原点="*">

  4. 在index.html:中设置内容安全策略

    <meta-http-equiv=";内容安全策略";content=";默认src*;脚本src*';不安全评估'';不安全内联';;connect-src*;img src*;style-src*';不安全内联';媒体src*"gt;

这使得WIDE的一切都是开放的,而跨来源域、白名单URL请求和内容安全策略的目的是限制跨域访问。我会把它作为一种研究和限制安全性的练习,等你把它做好后。

我希望这能有所帮助。

参考文献:

https://github.com/apache/cordova-plugin-whitelist#content-安全策略https://cordova.apache.org/announcements/2015/04/21/plugins-release-and-move-to-npm.htmlhttp://content-security-policy.com/

您的应用程序允许访问的域中有您正在尝试访问的域吗?您可以在comfig.xml上设置此项。

最新更新