Play 2.4 (Java) : 发布表单 returns 在 IE11 中未经授权,在 Chrome 中有效
Play 2.4 (Java) : posting a form returns Unauthorized in IE11, works in Chrome
我刚刚使用激活器 1.3.7 迁移到 Play 2.4.6。
我有一个处理表单的安全控制器。表单提交在 Chrome 中运行良好,但在 IE11 中,http POST 结果是 403 代码(未授权)。我不明白为什么会这样。这是一个间歇性问题:连接同一用户时,有时 post 有效,有时无效。我的应用程序中的其他 posts(在其他页面上)工作正常。
有人可以帮忙吗?
我使用 action composition 进行授权和 Play 提供的自动 csrf 过滤器,它们在 play 2.3 下都运行良好。他们还在 Chrome 中使用 play 2.4.6,我遵循了 CSRF configuration 的步骤...由于我的用户群,我需要让它在 IE 中工作。
这是控制器:
@play.mvc.Security.Authenticated(Secured.class)
@Authorize(minLevel=PermissionLevel.VENDOR)
public class SoumRapideFlexible extends Controller {
...
public static Result save(){
Form<SoumFlex> boundForm = soumflexForm.bindFromRequest();
if(boundForm.hasErrors()){
return badRequest(page.render(boundForm));
}
... // else do stuff with the Soumflex object
}
}
这是表格,精简到最基本的内容:
@(myForm: Form[SoumFlex])
@import helper._
<!DOCTYPE html>
<html>
<head>
<script data-main="@routes.Assets.versioned("javascripts/main_soumflex")"
src="@routes.Assets.versioned("lib/requirejs/require.js")"></script>
</head>
<body>
@form(routes.SoumRapideFlexible.save(), 'class -> "form-horizontal") {
@CSRF.formField
<div class="form-group">
<label class="col-md-2 control-label" for="inputProjet">Projet</label>
<div class="col-md-4">
<input type="text" class="form-control" id="inputProjet" name="inputProjet" placeholder="Nom du projet" required>
</div>
</div>
//... and many other form fields in similar fashion...
<input type="submit" class="btn btn-primary" id="soumettreSoum" value="Save">
</div> <!-- resumeSoum -->
}
</div>
</body>
</html>
好像有时用户凭据丢失或 csrf 令牌不正确...有人知道为什么我在 IE11 中会有这样的行为吗?请帮忙。
首先我使用了 this implementation of the global CSRF filter 但它给了我上述问题。
然后我尝试了 this implementation(用 csrf 替换 gzip),问题似乎已经消失了!我认为最后 属性 成功了。
我刚刚使用激活器 1.3.7 迁移到 Play 2.4.6。
我有一个处理表单的安全控制器。表单提交在 Chrome 中运行良好,但在 IE11 中,http POST 结果是 403 代码(未授权)。我不明白为什么会这样。这是一个间歇性问题:连接同一用户时,有时 post 有效,有时无效。我的应用程序中的其他 posts(在其他页面上)工作正常。 有人可以帮忙吗?
我使用 action composition 进行授权和 Play 提供的自动 csrf 过滤器,它们在 play 2.3 下都运行良好。他们还在 Chrome 中使用 play 2.4.6,我遵循了 CSRF configuration 的步骤...由于我的用户群,我需要让它在 IE 中工作。
这是控制器:
@play.mvc.Security.Authenticated(Secured.class)
@Authorize(minLevel=PermissionLevel.VENDOR)
public class SoumRapideFlexible extends Controller {
...
public static Result save(){
Form<SoumFlex> boundForm = soumflexForm.bindFromRequest();
if(boundForm.hasErrors()){
return badRequest(page.render(boundForm));
}
... // else do stuff with the Soumflex object
}
}
这是表格,精简到最基本的内容:
@(myForm: Form[SoumFlex])
@import helper._
<!DOCTYPE html>
<html>
<head>
<script data-main="@routes.Assets.versioned("javascripts/main_soumflex")"
src="@routes.Assets.versioned("lib/requirejs/require.js")"></script>
</head>
<body>
@form(routes.SoumRapideFlexible.save(), 'class -> "form-horizontal") {
@CSRF.formField
<div class="form-group">
<label class="col-md-2 control-label" for="inputProjet">Projet</label>
<div class="col-md-4">
<input type="text" class="form-control" id="inputProjet" name="inputProjet" placeholder="Nom du projet" required>
</div>
</div>
//... and many other form fields in similar fashion...
<input type="submit" class="btn btn-primary" id="soumettreSoum" value="Save">
</div> <!-- resumeSoum -->
}
</div>
</body>
</html>
好像有时用户凭据丢失或 csrf 令牌不正确...有人知道为什么我在 IE11 中会有这样的行为吗?请帮忙。
首先我使用了 this implementation of the global CSRF filter 但它给了我上述问题。
然后我尝试了 this implementation(用 csrf 替换 gzip),问题似乎已经消失了!我认为最后 属性 成功了。