Итак, у меня есть два вложенных AJAX-запроса к одному контроллеру.
$(this).click(function(){
$('#test_pass_image').show();
$.ajax({
type: 'POST',
beforeSend: function(request) {
request.setRequestHeader('X-CSRF-Token', $( 'meta[name="csrf-token"]' ).attr( 'content' ));
},
dataType:'json',
data: {
'project_id':"<%= @project_id %>",
'test_id' : "<%= @test_id %>"
},
url: encodeURI('/test_pass'),
success: function(){
alert('success');
$.ajax({
type: 'POST',
beforeSend: function(request) {
request.setRequestHeader('X-CSRF-Token', $( 'meta[name="csrf-token"]' ).attr( 'content' ));
},
dataType: 'json',
data: {
'project_id':"<%= @project_id %>",
'test_id' : "<%= @test_id %>"
},
url: encodeURI('/test_next_load/'),
success: function(){}
})
}
})
});
Теперь,
Когда первый POST (/ test_pass) не имеет View, появляется предупреждение ('success') и выполняется второй запрос POST.
Started POST "/test_pass" for ::1 at 2019-07-02 18:37:01 +0200
Processing by TestsController#test_pass as JSON
Parameters: {"project_id"=>"1", "test_id"=>"1"}
No template found for TestsController#test_pass, rendering head :no_content
Completed 204 No Content in 207ms (ActiveRecord: 179.7ms)
Started POST "/test_next_load/" for ::1 at 2019-07-02 18:37:04 +0200
Processing by TestsController#test_next_load as JSON
Parameters: {"project_id"=>"1", "test_id"=>"1"}
Rendering tests/test_next_load.js.erb
Rendered tests/test_next_load.js.erb (0.4ms)
Completed 200 OK in 10ms (Views: 2.1ms | ActiveRecord: 1.0ms)
Однако test_next_load.js.erb не рендерится, несмотря на то, что говорит Пума.
На странице не происходит никаких изменений.
И нет ошибки JS в браузере
Однако, если первый POST действительно имеет вид, например, предупреждение ( 'первый'),
Он не отображает первое и не попадает в условие успеха, и, очевидно, также не отображает второе.
Я нашел несколько странных заголовков ответа
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 31f62df6-3e33-448b-baae-365a3ecf3bdd
X-Runtime: 0.127960
X-XSS-Protection: 1; mode=block
Я полагаю, что это отчасти проблема. Как мне их сбросить? (Noopen)
Однако я не заинтересован в их изменении, поскольку они могут маскировать некоторые плохие конфигурации или ошибки, видя странную ситуацию рендеринга.