cordova-plugin-whitelist问题?升级cordova,ionic后,“访问控制源不能包含多个源”

时间:2018-10-22 15:49:11

标签: cordova ionic-framework cors cordova-plugins

我已经基于Cordova / ionic的相同代码构建了40多个应用程序,并且运行良好。然后,我更新了本地环境(最新的npm,node,ionic,cordova)。当我在本地浏览器(离子服务)中测试我的应用程序时,它们运行良好。当我构建它们并将其部署到测试设备上时,对MY服务器的所有ajax调用都会失败,并显示以下信息:

 Access Control Origin Cannot contain more than one origin. 

对其他2个API域的ajax调用也可以。我没有更改服务器上的任何内容,较旧的二进制文件仍然可以正常工作。当我检查Safari开发者面板时,它显示该错误,但表示没有从服务器返回标头信息,因此我无法了解拒绝哪些标头。我在PHP服务器代码上进行了全局搜索,我看到的只是标准访问标头。

    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");

我的index.html也有meta标签

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">

Config.xml包含

<access origin="*" />
<plugin name="cordova-plugin-whitelist" spec="1.0.0" />

我没有更改服务器上的任何内容(其他未升级的xcode二进制文件没有此问题),因此错误必须来自升级代码中的内部ajax代理解析。

我还能尝试什么?我如何看待发现和拒绝了哪些原始标头?

1 个答案:

答案 0 :(得分:0)

我不完全理解为什么这会立即触发错误,但是直到我在服务器上的/ home目录中找到一个.htaccess文件,并带有字体的访问标头指令。

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

我对此进行了评论,现在我的ajax调用正在使用更新的代码。