1

Kendo Ui Grid から Web API にデータを POST しようとしています

var crudServiceBaseUrl = "http://127.255.0.1:8081/api",
        dataSource = new kendo.data.DataSource({
            transport: {
                read:  {
                    url: crudServiceBaseUrl + "/meeting",
                    dataType: "jsonp",
                },
                update: {
                    type: "POST",
                    url: crudServiceBaseUrl + "/meeting/postmeeting",
                    contentType: "application/json; charset=utf-8",
                    dataType: 'json',

                    success: function (msg) {
                        alert("success");
                    }
                },

          .....


    $("#grid").kendoGrid({
        dataSource: dataSource,
        pageable: true,
        toolbar: ["create"],
        columns: [
            { field: "Organizer", title: "Organizer" },
            { field: "Title", title: "Title" },
            { field: "Location", title: "Location", },
            { command: ["edit", "destroy"], title: " ", width: "160px" }],

        editable: "inline"
    });

しかし、私が更新するとき

405 エラーが発生する

Request URL:http://127.255.0.1:8081/api/meeting/postmeeting
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, origin, content-type
Access-Control-Request-Method:POST
Host:127.255.0.1:8081
Origin:http://localhost:30320
Proxy-Connection:keep-alive

リクエストメソッドがオプションになった理由を誰かに説明してもらえますか? その結果、ASP.NET Web API の POST メソッドが呼び出されません

  [HttpPost]
  public HttpResponseMessage PostMeeting(MeetingEntity meeting)
    {
        _meetingRepository.Update(meeting);
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
4

1 に答える 1

1

からアクセスhttp://127.255.0.1:8081/api/meeting/postmeetinghttp://localhost:30320ている場合は、クロスオリジン リクエストです。デフォルトでは、ブラウザーは別のオリジンにあるリソースへのアクセスを防ぎます。これをチェックしてください。

Cross-Origin Resource Sharing ( CORS ) は、この制限を回避する 1 つの方法です。POST を実行すると、ブラウザはプリフライト CORS リクエストを作成します。これは基本的に OPTIONS リクエストです。この OPTIONS リクエストの結果、必要な CORS ヘッダーを含むレスポンスが返された場合、ブラウザはその後 POST リクエストを作成します。OPTIONS を処理するアクション メソッドを実装できますが、Web API で CORS を有効にするのは非常に簡単です。このリンクを確認してください。

于 2013-07-25T05:47:53.990 に答える