【问题标题】:Requests to server have erratic behaviour just for one service对服务器的请求仅针对一项服务具有不稳定的行为
【发布时间】:2015-05-03 00:25:08
【问题描述】:

我的 ionic 应用中有以下代码:

var req = {
  method: 'PUT',
  dataType: "json",
  url: loginservice.getServerAPI()+'/restaurants/'+$scope.currentRu.id+'/menu',
  data: response,
  headers: {
    "Content-Type" : "application/json",
    "Authorization" : "Bearer "+loginservice.gettoken()
  }
};

$http(req)
.success(function (data, status, headers, config) {
  // this callback will be called asynchronously
  // when the response is available
  $state.go('wtf.thanks');
  return data;
})
.error(function (data, status, headers, config) {
  // called asynchronously if an error occurs
  // or server returns response with an error status.
  console.log(data);
  return "error";
});

};

每次,我得到一个错误,每次都不同,而请求完全相同。

这里是相关的API代码:

routes/restaurants.js

router.route('/:id/menu')
  .put(restaurantController.updateRestaurantMenu);

controllers/restaurant.js

exports.updateRestaurantMenu = function(req, res) {
  RestaurantModel.findOne({'id': req.params.id}, function(err, restaurant) {

    if (!err) {
      // update restaurant queue
      restaurant.menus = req.body.menus;
      restaurant.save(function(err) {
        if (!err) {
          return res.send(restaurant);
        } else {
          console.log(err);
          return res.status(400).send(err);
        }
      });
    } else {
      console.log(err);
      return res.status(400).send(err);
    }
  });
};

我在日志中得到的只是:

...
OPTIONS /api/restaurants/174/menu 200 1.742 ms - 3
OPTIONS /api/restaurants/174/menu 200 0.928 ms - 3
...

而不是类似的东西:

...
OPTIONS /api/restaurants/174/menu 200 1.742 ms - 3
PUT /api/restaurants/174/menu 200 1.742 ms - 3
OPTIONS /api/restaurants/174/menu 200 1.742 ms - 3
PUT /api/restaurants/174/menu 200 0.928 ms - 3
...

CORS 已处理。

app.js

// allow cross domain
var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.set('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization');
  next();
};
app.use(allowCrossDomain);

就目前而言,它是唯一的PUT 请求以这种方式运行。我还有其他 PUT 请求可以正常工作。

【问题讨论】:

    标签: angularjs node.js ionic-framework


    【解决方案1】:

    好的,所以问题是由于发送的令牌(用于基本身份验证目的)显然太大了。这是由于代码中的问题,但之前没有发现,因为之前令牌不够大而无法破坏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2011-08-02
      • 2013-10-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多