我正在嘗試使用AJAX進行REST調用(POST)。這是我的AJAX代碼預檢的響應具有無效的HTTP狀態代碼400
<script>
var settings = {
"async": true,
"crossDomain": true,
"dataType": "json",
"url": "http://localhost:port/service/myservice",
"method": "POST",
"data": '{jsondata}',
"headers": {
"accept": "application/json",
"Authorization": "authValue"
}
}
$.ajax(settings)
.done(function (response) {
console.log(response);
});
</script>
起初,我得到這個錯誤:的XMLHttpRequest無法加載http://localhost:port/service/myservice。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許原產地'null'訪問。響應有HTTP狀態代碼400
要解決此問題,我添加以下代碼在我dropwizard應用
Dynamic filter = env.servlets().addFilter("CORS", CrossOriginFilter.class);
filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS");
filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin");
filter.setInitParameter("allowCredentials", "true");
filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
加入這個我最初的異常走之後,但我發現以下異常:XMLHttpRequest無法加載http://localhost:port/service/myservice。預檢的響應具有無效的HTTP狀態代碼400
此問題與CORS相關嗎?我在這裏做錯了什麼?
UPDATE
做更多的調試後,我發現這種行爲。當發送沒有授權標題的請求時,我收到415(不支持的介質類型)錯誤。
我認爲我的AJAX代碼有問題,有人可以幫我找到問題嗎?謝謝。