3

RestEasy APIを使用しており、すべてのhttpメソッドへのアクセスをモバイルクライアントに提供する必要があります。これらのリクエストはすべてajax経由で送信する必要があります。

クライアントコードの例を次に示します。

var data = {
   login: 'usertest@gmail.com',
   password: '123456'
 };

 $.ajax({
   url: 'http://1.1.1.3:8080/api/admin',
   type: 'POST',
   contentType : 'application/json',
   dataType: "json",
   data: JSON.stringify(data),
   success: function(){
     console.log(arguments);
   },
   error: function(){
     console.log('error')
   }
 });

そしてここにサーバーがあります:

@POST
@Consumes("application/json")
@Produces("application/json")
public Response doLogin(User user) {...}

そしてここにエラーがあります:

XMLHttpRequest cannot load http://1.1.1.3:8080/api/admin. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

ローカルホストにリクエストしたときのサーバーからのヘッダーの回答は次のとおりです

Access-Control-Allow-Cred...    true
Access-Control-Allow-Orig...    http://1.1.1.3:8080 //request sent from http://1.1.1.3:8080
Access-Control-Expose-Hea...    X-Test-2, X-Test-1
Content-Length  1136
Content-Type    text/html;charset=utf-8
Date    Wed, 19 Dec 2012 17:54:19 GMT
Server  Apache-Coyote/1.1

PS:通常のhttpリクエストを介してすべてが正常に機能します。

私は何が欠けていますか?

4

1 に答える 1

0

私は友人の助けを借りてそれを見つけました...私はここからCorsフィルターライブラリを使用していますhttp://software.dzhuvinov.comそして、web.xmlに1つのパラメーターがありませんでした。「Origin」を追加して修正しました:

    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Origin, Accept, Content-Type,
            X-Requested-With</param-value>
    </init-param>
于 2012-12-20T11:49:23.137 に答える