2

javascript、html、css (クロス プラットフォーム テクノロジ) を使用してモバイル アプリケーションを開発しています。asp .net を使用して Web サービスを作成しました。Web サービスを指定して結果を表示しますが、これは IE (インターネット エクスプローラー) でのみ機能します。サーバーから "true" 応答として結果を取得しますが、他のブラウザー (Mozilla、chrome) では機能せず、結果を取得します」サーバーからの応答として「false」。すべてのブラウザで結果が「true」になることを期待していますが、発生していません。以下に、使用したすべてのコードを示します。

WebService.asmx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    [WebMethod]
    public bool GetValue(string id,string pwd)
    {
        string userid = "abc";
        string password = "xyz";
        if (userid==id && password==pwd)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}

Web.config

<?xml version="1.0"?>

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
    </system.web>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*"/>
                <add name="Access-Control-Allow-Headers" value="Content-Type"/>
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

HTML ページ コード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>
    </title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
   <script>
       function JsonTest2() {
jQuery.support.cors = true;
           $.ajax({
               type: 'POST',
               url: "http://10.16.10.35/webservice_test/WebService.asmx/GetValue",
               data: '{"id":"vipul","pwd":"borole"}',
               contentType: 'application/json; charset=UTF-8',
               dataType: 'json',
               async: false,
               success: function (msg) {
                   alert(msg.d);
               },
               error: function (msg) {
                   alert('failure');
                   alert(msg);
               }
           });
       }
   </script>
</head>
<body>
<input id="Button1" type="button" value="button" onclick="javascript:JsonTest2();" />

</body>
</html>

すべてのブラウザーからこの Web サービスを呼び出すのを手伝ってください。false を返す理由を理解できません。

4

1 に答える 1

1

POST 用の Access-Control-Allow-Methods も必要です。

また、Origin に * を使用すると、誰でもサービスにアクセスできることに気付きましたか? Thinktecture IdentityModel ライブラリなど、CORS の実装に適したライブラリを使用することをお勧めします。

http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/

IIS/Url オプションを調べます (IIS からホストしているようです)。

于 2013-06-27T03:43:32.213 に答える