1

Angular.js と Couchdb を使用して単純なサービスを構成しようとしています。

var App = angular.module('myapp', ['ngResource'], function(){});

App.factory('products', ['$resource', function($resource) { 

  var Products = $resource(
      'http://localhost\\:5984/products/_all_docs',
      {},
      { all: { method: 'GET'} }
  );

  return {
    all: function() {
        return Products.all();
    }
  };
}]);

コントローラーから呼び出すとproducts.all()、常に取得されます

リクエストヘッダー

OPTIONS /productos/_all_docs HTTP/1.1
Host: localhost:5984
Connection: keep-alive
Access-Control-Request-Method: GET
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
Access-Control-Request-Headers: accept, origin, x-requested-with
Accept: */*
DNT: 1
Referer: http://localhost:8000/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: es-419,es;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

応答ヘッダー

HTTP/1.1 405 Method Not Allowed
Server: CouchDB/1.2.1 (Erlang OTP/R14B04)
Date: Tue, 29 Jan 2013 22:15:31 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 69
Cache-Control: must-revalidate
Allow: GET,HEAD,POST

Request URL:http://localhost:5984/productos/_all_docs
Request Method:OPTIONS
Status Code:405 Method Not Allowed

OPTIONS メソッドを宣言していないのに、なぜ OPTIONS メソッドを送信するのか想像できません。

4

1 に答える 1

5

OPTIONSメソッドは、クロスオリジンリクエストを行うことから来ています。GET リクエストではなく OPTIONS リクエストを受け取るのはなぜですか? を参照してください。. ホストとリクエストの両方が であるにもかかわらずlocalhost、ポートが異なります (5984、8000)。JS の同じ起点ホスト、異なるポートを参照してください。

于 2013-01-29T22:39:35.313 に答える