【问题标题】:Angular + Rails: POST request 422/CSRF errorAngular + Rails:POST 请求 422/CSRF 错误
【发布时间】:2016-10-23 07:12:15
【问题描述】:

我不断得到:

无法验证 CSRF 令牌的真实性 在 2 毫秒内完成 422 个不可处理的实体(ActiveRecord:0.0 毫秒)

我正在尝试发出 $http 请求以发布新的数据库条目。在 RoR 上使用 Angular。

在我的 Angular 控制器中:

...
$scope.createArea = function(data){
  var areaData = $scope.areaData;
  var url = '/locations/' + locationService.id + '/floors/' + floorService.id + '/areas.json'
  $http({
    url: url,
    method: 'POST',
    contentType: "application/json",
    data: areaData
  });
};

我的表格:

<div class="form-horizontal" id="new-area" ng-controller="mapsController">
  <form ng-submit="createArea(areaData)">
    <div id="name-group" class="form-group">
      <label>Name</label>
      <input type="text" name="name" class="form-control" placeholder="Area Name" ng-model="areaData.name" /><br />

      <label>Group</label>
      <select class="form-control">
        <option ng-repeat="group in groups" value="{{group.id}}" ng-model="areaData.groupID">{{group.name}}</option>
      </select>
    </div>

    <button type="submit" class="btn btn-default">Create</button>
  </form>
</div>

在我的 Rails 控制器中:

def create
    respond_to do |format|
      format.json
    end
end

【问题讨论】:

  • 通常在向 Rails 端点发送请求之前,您需要一个拦截器来创建某种类型的 JWT。这是现有应用程序还是新应用程序。
  • 现有。只是将一些功能转移到 Angular。我之前提出过没有问题的请求,但是通过 jQuery 而不是 Angular。
  • 我认为这篇文章对此进行了详细说明:stackoverflow.com/questions/14734243/….

标签: ruby-on-rails angularjs json ajax csrf


【解决方案1】:

找到答案:将 gem 'angular_rails_csrf' 添加到我的 gemfile 中。文档:https://github.com/jsanders/angular_rails_csrf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2020-09-05
    相关资源
    最近更新 更多