apache / cordova-ios

Apache Cordova iOS
https://cordova.apache.org/
Apache License 2.0
2.16k stars 988 forks source link

My name is Jenny (Dan Abramov is my main), can you fix my issue? #714

Closed jenny-the-boss-69 closed 4 years ago

jenny-the-boss-69 commented 4 years ago

Bug Report

Problem

On fetch with IOS (Android works as intended) platform to HTTPS (secure endpoint) url querys are encoded when they shouldn't be.

What is expected to happen?

Fetch request are made with the given url => https://example.com?fileType=image%2Fjpeg

What does actually happen?

All query strings in urls are double encoded on fetch => https://example.com?fileType=image%252Fjpeg

System info

cordova info

cordova-lib@9.0.1 with:
  cordova-common@3.2.1
  cordova-create@2.0.0
  cordova-fetch@2.0.1
  cordova-serve@3.0.0

Environment: 
  OS: darwin
  Node: v8.6.0
  npm: 5.3.0

Plugins:
  code-push
  cordova-android-support-gradle-release
  cordova-fabric-plugin
  cordova-plugin-add-swift-support
  cordova-plugin-appcenter-analytics
  cordova-plugin-appcenter-crashes
  cordova-plugin-appcenter-shared
  cordova-plugin-camera
  cordova-plugin-code-push
  cordova-plugin-device
  cordova-plugin-dialogs
  cordova-plugin-file
  cordova-plugin-file-transfer
  cordova-plugin-geolocation
  cordova-plugin-inappbrowser
  cordova-plugin-network-information
  cordova-plugin-statusbar
  cordova-plugin-whitelist
  cordova-plugin-wkwebview-engine
  cordova-plugin-wkwebview-file-xhr
  cordova-plugin-zip
  cordova.plugins.diagnostic
  phonegap-plugin-barcodescanner

Android platform:
  ERROR: android: Command failed with exit code ENOENT

iOS platform:
  Xcode 11.2
  Build version 11B52

config.xml <<EOF
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.application" ios-CFBundleVersion="20" version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name short="Application">Application</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <allow-navigation href="https://player.vimeo.com" />
    <allow-navigation href="https://www.youtube.com" />
    <allow-navigation href="https://youtube.com" />
    <allow-navigation href="http://images.ctfassets.net" />
    <feature name="IntentAndNavigationFilter">
        <param name="ios-package" value="CDVIntentAndNavigationFilter" />
        <param name="onload" value="true" />
    </feature>
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarStyle" value="default" />
    <preference name="StatusBarBackgroundColor" value="#FFFFFF" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="Orientation" value="default" />
    <preference name="cordova.plugins.diagnostic.modules" value="CAMERA" />
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="AllowInlineMediaPlayback" value="true" />
    <preference name="deployment-target" value="9.0" />
    <platform name="android">
        <allow-intent href="market:*" />
        <preference name="CodePushDeploymentKey" value="XXXXXX" />
        <icon density="ldpi" src="env/res/icon/android/ldpi.png" />
        <icon density="mdpi" src="env/res/icon/android/mdpi.png" />
        <icon density="hdpi" src="env/res/icon/android/hdpi.png" />
        <icon density="xhdpi" src="env/res/icon/android/xhdpi.png" />
        <icon density="xxhdpi" src="env/res/icon/android/xxhdpi.png" />
        <icon density="xxxhdpi" src="env/res/icon/android/xxxhdpi.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <preference name="CodePushDeploymentKey" value="XXXXXX" />
        <icon height="180" src="env/res/icon/ios/Icon-App-60x60@3x.png" width="180" />
        <icon height="60" src="env/res/icon/ios/Icon-App-60x60@1x.png" width="60" />
        <icon height="120" src="env/res/icon/ios/Icon-App-60x60@2x.png" width="120" />
        <icon height="76" src="env/res/icon/ios/Icon-App-76x76@1x.png" width="76" />
        <icon height="152" src="env/res/icon/ios/Icon-App-76x76@2x.png" width="152" />
        <icon height="40" src="env/res/icon/ios/Icon-App-40x40@1x.png" width="40" />
        <icon height="80" src="env/res/icon/ios/Icon-App-40x40@2x.png" width="80" />
        <icon height="57" src="env/res/icon/ios/Icon-App-57x57@1x.png" width="57" />
        <icon height="114" src="env/res/icon/ios/Icon-App-57x57@2x.png" width="114" />
        <icon height="72" src="env/res/icon/ios/Icon-App-72x72@1x.png" width="72" />
        <icon height="144" src="env/res/icon/ios/Icon-App-72x72@2x.png" width="144" />
        <icon height="29" src="env/res/icon/ios/Icon-App-29x29@1x.png" width="29" />
        <icon height="58" src="env/res/icon/ios/Icon-App-29x29@2x.png" width="58" />
        <icon height="50" src="env/res/icon/ios/Icon-Small-50x50@1x.png" width="50" />
        <icon height="100" src="env/res/icon/ios/Icon-Small-50x50@2x.png" width="100" />
        <splash src="env/res/screen/ios/Default@2x~universal~anyany.png" />
    </platform>
    <preference name="deployment-target" value="9.0" />
    <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
        <string>To scan barcodes and upload test evidence for test purchases.</string>
    </edit-config>
    <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
        <string>To upload test evidence for test purchases.</string>
    </edit-config>
    <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryAddUsageDescription">
        <string>Need photo library access to save pictures to device</string>
    </edit-config>
    <edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
        <string>Need photo location data</string>
    </edit-config>
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <plugin name="cordova-plugin-file" spec="^6.0.2" />
    <plugin name="cordova-fabric-plugin" spec="^1.1.14-dev">
        <variable name="FABRIC_API_KEY" value="XXXXXX" />
        <variable name="FABRIC_API_SECRET" value="XXXXXX" />
    </plugin>
    <plugin name="cordova-plugin-code-push" spec="^1.12.0" />
    <plugin name="cordova-plugin-zip" spec="^3.1.0" />
    <plugin name="cordova-plugin-file-transfer" spec="^1.7.1" />
    <plugin name="cordova-plugin-appcenter-shared" spec="^0.3.6" />
    <plugin name="cordova-plugin-appcenter-analytics" spec="^0.3.6" />
    <plugin name="cordova-plugin-appcenter-crashes" spec="^0.3.6" />
    <plugin name="cordova-plugin-geolocation" spec="^4.0.2" />
    <plugin name="cordova-android-support-gradle-release" spec="^3.0.1">
        <variable name="ANDROID_SUPPORT_VERSION" value="27.+" />
    </plugin>
    <plugin name="cordova-plugin-whitelist" spec="^1.3.4" />
    <plugin name="cordova-plugin-statusbar" spec="^2.4.3" />
    <plugin name="phonegap-plugin-barcodescanner" spec="^7.1.2">
        <variable name="ANDROID_SUPPORT_V4_VERSION" value="27.+" />
    </plugin>
    <plugin name="cordova-plugin-camera" spec="^4.1.0">
        <variable name="ANDROID_SUPPORT_V4_VERSION" value="27.+" />
    </plugin>
    <plugin name="cordova.plugins.diagnostic" spec="^4.0.12">
        <variable name="ANDROID_SUPPORT_VERSION" value="28.+" />
    </plugin>
    <plugin name="cordova-plugin-wkwebview-engine" spec="^1.2.1" />
    <plugin name="cordova-plugin-wkwebview-file-xhr" spec="^2.1.1" />
    <plugin name="cordova-plugin-device" spec="^2.0.3" />
    <plugin name="cordova-plugin-network-information" spec="^2.0.2" />
    <plugin name="cordova-plugin-inappbrowser" spec="^3.1.0" />
    <engine name="android" spec="^7.1.4" />
</widget>

EOF

package.json <<EOF
{
  "name": "application",
  "version": "2.13.48",
  "private": true,
  "main": "static.js",
  "cordovaHomepage": "./",
  "dependencies": {
    "@contentful/rich-text-react-renderer": "^13.2.0",
    "@reach/visually-hidden": "0.1.4",
    "autoprefixer": "7.1.1",
    "axios": "0.17.0",
    "babel-core": "6.25.0",
    "babel-eslint": "7.2.3",
    "babel-jest": "20.0.3",
    "babel-loader": "7.0.0",
    "babel-preset-react-app": "3.0.1",
    "babel-runtime": "6.23.0",
    "bowser": "1.7.1",
    "case-sensitive-paths-webpack-plugin": "2.1.1",
    "chalk": "1.1.3",
    "classnames": "2.2.5",
    "code-push": "^3.0.1",
    "contentful": "7.10.0",
    "cordova-android": "8.1.0",
    "cordova-android-support-gradle-release": "3.0.1",
    "cordova-fabric-plugin": "git://github.com/andrerinaldi/FabricPlugin.git",
    "cordova-ios": "^5.0.1",
    "cordova-plugin-add-swift-support": "^2.0.2",
    "cordova-plugin-app-name": "^1.0.7",
    "cordova-plugin-appcenter-analytics": "0.5.1",
    "cordova-plugin-appcenter-crashes": "0.5.1",
    "cordova-plugin-appcenter-shared": "0.5.1",
    "cordova-plugin-camera": "4.1.0",
    "cordova-plugin-code-push": "1.12.0",
    "cordova-plugin-device": "2.0.3",
    "cordova-plugin-dialogs": "2.0.2",
    "cordova-plugin-file": "6.0.2",
    "cordova-plugin-file-transfer": "1.7.1",
    "cordova-plugin-geolocation": "4.0.2",
    "cordova-plugin-inappbrowser": "3.1.0",
    "cordova-plugin-network-information": "2.0.2",
    "cordova-plugin-statusbar": "2.4.3",
    "cordova-plugin-whitelist": "1.3.4",
    "cordova-plugin-wkwebview-engine": "1.2.1",
    "cordova-plugin-wkwebview-file-xhr": "2.1.2",
    "cordova-plugin-zip": "3.1.0",
    "cordova.plugins.diagnostic": "5.0.1",
    "css-loader": "0.28.4",
    "currency-formatter": "1.3.0",
    "dotenv": "4.0.0",
    "downshift": "2.0.10",
    "e164": "0.0.5",
    "eslint": "3.19.0",
    "eslint-config-react-app": "1.0.5",
    "eslint-loader": "1.7.1",
    "eslint-plugin-flowtype": "2.34.0",
    "eslint-plugin-import": "2.2.0",
    "eslint-plugin-jsx-a11y": "5.0.3",
    "express-sslify": "1.2.0",
    "extract-text-webpack-plugin": "2.1.2",
    "file-loader": "0.11.2",
    "fs-extra": "3.0.1",
    "google-libphonenumber": "3.0.8",
    "helmet": "3.18.0",
    "history": "4.7.2",
    "html-webpack-plugin": "2.29.0",
    "i18next": "8.4.3",
    "jest": "20.0.4",
    "js-cookie": "2.2.0",
    "js-file-download": "0.4.4",
    "jss-vendor-prefixer": "8.0.1",
    "left-pad": "1.1.3",
    "lodash": "4.17.4",
    "marked": "0.3.19",
    "material-ui": "1.0.0-beta.31",
    "material-ui-icons": "1.0.0-beta.17",
    "mergeby": "1.1.0",
    "mobile-detect": "1.3.7",
    "moment": "2.20.1",
    "object-assign": "4.1.1",
    "offline-js": "0.7.19",
    "phonegap-plugin-barcodescanner": "^7.1.2",
    "pluralize": "7.0.0",
    "polished": "1.9.2",
    "postcss-flexbugs-fixes": "3.0.0",
    "postcss-loader": "2.0.6",
    "promise": "7.1.1",
    "prop-types": "15.5.10",
    "qrcode.react": "^0.9.3",
    "qs": "6.5.1",
    "rc-swipeout": "^2.0.11",
    "react": "16.2.0",
    "react-click-outside": "3.0.0",
    "react-dev-utils": "3.0.2",
    "react-dom": "16.2.0",
    "react-error-overlay": "1.0.9",
    "react-hammerjs": "^1.0.1",
    "react-image-magnify": "2.7.0",
    "react-infinite-scroller": "1.2.4",
    "react-markdown": "3.0.2",
    "react-pinch-zoom-pan": "1.4.5",
    "react-portal": "^4.2.0",
    "react-redux": "5.0.5",
    "react-router": "4.2.0",
    "react-router-dom": "4.2.2",
    "react-router-redux": "5.0.0-alpha.9",
    "react-slick": "0.24.0",
    "react-tap-event-plugin": "3.0.2",
    "react-virtualized": "9.18.5",
    "recharts": "1.0.0-beta.10",
    "recompose": "0.26.0",
    "redux": "3.7.2",
    "redux-devtools-extension": "2.13.2",
    "redux-form": "7.1.2",
    "redux-logger": "3.0.6",
    "redux-persist": "5.7.2",
    "redux-thunk": "2.2.0",
    "reselect": "3.0.1",
    "scroll-to-element": "^2.0.3",
    "style-loader": "0.18.2",
    "sw-precache-webpack-plugin": "0.11.3",
    "url-loader": "0.5.9",
    "uuid": "3.2.1",
    "webpack": "2.6.1",
    "webpack-dev-server": "2.5.0",
    "webpack-manifest-plugin": "1.1.0",
    "whatwg-fetch": "2.0.3",
    "xcode": "^2.0.0",
    "xml2js": "^0.4.22"
  },
  "scripts": {
    ...
  },
  "devDependencies": {
    "babel-cli": "6.26.0",
    "babel-jest": "20.0.3",
    "babel-plugin-add-module-exports": "0.2.1",
    "babel-plugin-syntax-dynamic-import": "6.18.0",
    "babel-plugin-transform-class-properties": "6.24.1",
    "babel-plugin-transform-object-rest-spread": "6.23.0",
    "babel-preset-es2015": "6.24.1",
    "babel-preset-es2017": "6.24.1",
    "cross-env": "5.0.1",
    "eslint-config-react": "1.1.7",
    "eslint-config-standard-jsx": "4.0.2",
    "eslint-config-standard-react": "5.0.0",
    "eslint-plugin-class-property": "1.1.0",
    "eslint-plugin-promise": "3.6.0",
    "eslint-plugin-standard": "3.0.1",
    "express": "4.15.3",
    "inquirer": "5.1.0",
    "react-test-renderer": "15.6.1",
    "regenerator-runtime": "0.10.5",
    "standard": "10.0.2",
    "svg-inline-loader": "0.8.0",
    "xmlpoke": "0.1.13"
  },
  "standard": {
    "ignore": [
      "android/",
      "ios",
      "__tests__"
    ],
    "parser": "babel-eslint",
    "plugin": "react",
    "extends": [
      "eslint:recommended",
      "react/jsx-uses-react",
      "plugin:react/recommended"
    ]
  },
  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx}"
    ],
    "setupFiles": [
      "<rootDir>/config/polyfills.js"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.js?(x)",
      "<rootDir>/src/**/?(*.)(spec|test).js?(x)"
    ],
    "testEnvironment": "node",
    "testURL": "http://localhost",
    "transform": {
      "^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "json",
      "web.jsx",
      "jsx"
    ]
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "cordova": {
    "plugins": {
      "cordova-plugin-whitelist": {},
      "cordova-plugin-statusbar": {},
      "phonegap-plugin-barcodescanner": {
        "ANDROID_SUPPORT_V4_VERSION": "27.+"
      },
      "cordova-plugin-camera": {
        "ANDROID_SUPPORT_V4_VERSION": "27.+"
      },
      "cordova.plugins.diagnostic": {
        "ANDROID_SUPPORT_VERSION": "28.+"
      },
      "cordova-plugin-wkwebview-engine": {},
      "cordova-plugin-wkwebview-file-xhr": {},
      "cordova-plugin-device": {},
      "cordova-plugin-network-information": {},
      "cordova-plugin-inappbrowser": {},
      "cordova-plugin-file": {},
      "cordova-fabric-plugin": {
        "FABRIC_API_KEY": "XXXXXX",
        "FABRIC_API_SECRET": "XXXXXX"
      },
      "cordova-plugin-code-push": {},
      "cordova-plugin-zip": {},
      "cordova-plugin-file-transfer": {},
      "cordova-plugin-appcenter-shared": {},
      "cordova-plugin-appcenter-analytics": {},
      "cordova-plugin-appcenter-crashes": {},
      "cordova-plugin-geolocation": {},
      "cordova-android-support-gradle-release": {
        "ANDROID_SUPPORT_VERSION": "27.+"
      },
      "cordova-plugin-add-swift-support": {}
    },
    "platforms": [
      "android",
      "ios"
    ]
  },
  "engines": {
    "node": "8.6.0",
    "npm": "5.3.0"
  }
}
EOF

Command or Code

cordova build ios

Checklist

jcesarmobile commented 4 years ago

I can't reproduce. Can you provide a simple sample app where it can be reproduced?

brodycj commented 4 years ago

Closing due to lack of info. Please feel free to come back with a simple reproduction app, with a minimal, reproducible example ([1]). You would have the best change for our support by raising this in a new issue.

[1] https://stackoverflow.com/help/minimal-reproducible-example