1

我正在尝试通过 Trigger.io 将 Web 应用程序部署到 android。尽管该应用程序最初设法加载,但我无法通过该应用程序访问远程服务器。尝试通过远程服务器登录时收到错误消息(见下文)

我正在使用以下代码向远程服务器提交用户名和密码值

$.post "#{window.Public.domain}/users/login",
   nickname: $('input.username').val()
   password: $('input.password').val()

在此处输入图像描述

在此处输入图像描述

我将相同的应用程序部署到 IOS 并且运行正常,即访问相同的远程服务器不是问题

任何人都知道为什么我无法访问 android 环境中的远程服务器,而我在 IOS 环境中没有问题?

附上清单以供参考

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="io.trigger.forge9b9f8cdedc7f11e2bd4912313d00dc45" android:installLocation="auto" android:versionCode="1374544692" android:versionName="0.1">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="15" />

<application android:icon="@drawable/icon" android:label="Fulfilled" android:name="io.trigger.forge.android.core.ForgeApp">
    <activity android:configChanges="mcc|mnc|locale|touchscreen|keyboardHidden|navigation|orientation|screenLayout|uiMode|fontScale|screenSize" android:launchMode="singleTask" android:name="io.trigger.forge.android.core.ForgeActivity" android:stateNotNeeded="true" android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter>
           <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <provider android:authorities="io.trigger.forge9b9f8cdedc7f11e2bd4912313d00dc45" android:exported="true" android:name="io.trigger.forge.android.core.ForgeContentProvider" tools:ignore="ExportedContentProvider" />
</application>

更新:

尝试了 James 的建议,将使用 $.post 更改为 forge.request。

现在,当我尝试调用服务器时,我得到了这个错误

[警告] java.net.ConnectException: localhost/127.0.0.1:9000 - org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:254) 处的连接被拒绝 [警告] [警告] org.apache .harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:533) [WARNING] at java.net.Socket.connect(Socket.java:1055) [WARNING] at org.apache.harmony.luni.internal.net .www.protocol.http.HttpConnection.(HttpConnection.java:62) [警告] 在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88)

我在我的应用程序中为服务器帖子指定的域就是这样

forge.request.ajax
  url: "http://localhost:9000/users/login.json"
  type: "POST"
  data:
    nickname: $('input.username').val()
    password: $('input.password').val()

以上适用于 IOS 部署。还有其他我需要处理的配置吗?

4

1 回答 1

2

如果没有 Trigger.io 应用程序的额外配置,跨域 XHR 请求是不可能的。

在这种情况下,您应该可以使用forge.request.ajax提交表单:https ://trigger.io/docs/current/api/modules/request.html 。

在其他情况下,如果无法使用请求模块,则可以Access-Control-Allow-*在服务器端设置标头以便正常 XHR 工作:https ://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS .

于 2013-07-25T14:29:28.480 回答