我想加爲我的阿卡HTTP API CORS支持:https://github.com/lomigmegard/akka-http-corsCORS與headerValueByName問題(阿卡-HTTP-CORS)阿卡HTTP同時使用<code>akka-http-cors</code>
一切正常時,我基本上將CORS支持一個簡單路線,例如:
val route = cors() {
path("ping") {
get {
complete("pong")
}
}
}
與相應的jQuery的電話:
$.ajax({
url: "http://localhost:9000/ping",
type: "GET",
success: function(data) { alert(data); }
});
返回正確「傍」預期
但是,當我嘗試提取(服務器端)從請求某些特定標題時,CORS支持的響應似乎是突然被打破。例如,有:
val route = cors() {
headerValueByName("myheader") { (myheader) =>
path("ping") {
get {
complete("pong")
}
}
}
}
與相應的jQuery的電話:
$.ajax({
url: "http://localhost:9000/ping",
type: "GET",
beforeSend: function(xhr){xhr.setRequestHeader('myheader', 'test');},
success: function(data) { alert('Success!' + data); }
});
失敗,CORS錯誤控制檯:
XMLHttpRequest cannot load http://localhost:9000/ping.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8080' is therefore not allowed access.
The response had HTTP status code 400.
看來,加入headerValueByName(...)到航路中斷cors支持,我不明白爲什麼。
我也嘗試過cors的不同實現(基於自定義特性),並且所有這些行爲都是相同的。
我在這裏錯過了什麼?
非常感謝!你完全正確:) – Elsener