4

Angular $http.post メソッドが JSON をサービス (RESTFul サービス、ノード サービス) に投稿していません。次のエラーが表示されます:

XMLHttpRequest cannot load /some/service. Invalid HTTP status code 404

投稿したコードはこちら

$http({method:'POST', url:'/some/service/',data:{"key1":"val1","key2":"val2"}}).success(function(result){
  alert(result);
});

私のクロムの古いバージョン、つまりv29でも同じコードが機能しています。. .* . Chrome を V30 にアップデートしました。. .* . 今、それは機能していません。Firefox でも動作しません。chrome と Firefox に問題はありますか?

誰でも助けることができますか?

4

2 に答える 2

2

Chrome をバージョン 30.0.1599.101 に更新した後、同様の問題に遭遇し、サーバーの問題であることが判明しました。

私のサーバーはExpress(http://expressjs.com/)を使用して実装されており、CORSを許可する以下のコード( CORSを許可する方法)はうまく機能します:

var express = require("express");
var server = express();

var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'content-Type,x-requested-with');
    next();
}
server.configure(function () {
    server.use(allowCrossDomain);
});

server.options('/*', function(req, res){
    res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'content-Type,x-requested-with');
    res.send(200);
});

server.post('/some_service', function (req, res) {
  res.header('Access-Control-Allow-Origin', req.headers.origin);

  // stuff here

  //example of a json response
  res.contentType('json');
  res.send(JSON.stringify({OK: true}));
});

HTTP リクエストは次のようになります。

$http({
    method: 'POST',
    url: 'http://localhost/some_service',
    data: JSON.stringify({
        key1: "val1",
        key2: "val2"
    }),
    headers: {
        'Content-Type': 'application/json; charset=utf-8'
    }
}).success(
    function (data, status, headers, config) {
        //do something
    }
).error(
    function (data, status, headers, config) {
        //do something
    }
);

ここ ( https://stackoverflow.com/a/8572637/772020 )で指摘されているように、CORS を有効にするためにサーバーが OPTIONS 要求を適切に処理するようにすることが目的です。

于 2013-10-22T20:02:17.390 に答える
0

さて、数日前に新しい chrome アップデートがリリースされました。セキュリティ関連の変更があった場合は、そのリリースのパッチ ノートを確認してください。私の拡張機能は、数日前に FF と Chrome の両方で機能しなくなりました。

于 2013-10-06T18:36:32.847 に答える