我有一個角度js客戶端向服務器發出請求。我的HTTP提供商(在http://localhost)的代碼如下所示:Angular 1.5 CORS
angular.config(['$httpProvider', function ($httpProvider) {
// Reset headers to avoid OPTIONS request:
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
$httpProvider.defaults.withCredentials = true;
}]);
在服務器端(在http://localhost:3000,所以只是端口不同),我返回頭後面,像這樣在Mojolicious一個perl腳本:
# Set response headers so that we can send cross-domain requests
$self->res->headers->header('Access-Control-Allow-Origin' => $self->req->headers->header('origin'));
$self->res->headers->header('Access-Control-Allow-Credentials' => 'true');
$self->res->headers->header('Access-Control-Allow-Methods' => 'GET, POST, OPTIONS');
$self->res->headers->header('Access-Control-Allow-Headers' => 'Content-Type, X-CSRF-Token');
$self->res->headers->header('Access-Control-Max-Age' => '1728000');
現在,這段代碼在Angular 1.2中完美工作。但是,當我嘗試升級到Angular 1.5時,事情就停止了。當查看我的日誌和螢火蟲時,服務器被訪問,執行正確的腳本,服務器返回正確的值,瀏覽器(同時使用firefox和chrome進行測試)只是忽略發回的所有內容,包括任何錯誤代碼。這個問題似乎也發生在Angular 1.4中。
與Angular在此期間做了些什麼改變?是否需要運行一些額外的代碼才能接受跨域請求?
在老版本的角度的結果已經從服務器乾淨的數據。 在新版本中它返回xhr對象,描述如下:https://docs.angularjs.org/api/ng/service/$http 這就是爲什麼有可能 –
事情發生變化......具體是什麼您檢查實際請求時的差異? – charlietfl
當我使用螢火蟲檢查請求時,它們的標題字體呈紅色,就像發生錯誤一樣。擴展它們時只有標題選項卡,並且只包含請求標題,而不包含響應標題。我也沒有看到任何錯誤代碼或響應。 – psgels