2015-05-08 23 views
15

Tôi vừa cập nhật phiên bản mới trên Angular + Ionic và phương thức xử lý yêu cầu từ xa ngừng hoạt động và trả về luôn phản hồi 404.Ionic + Angular POST yêu cầu trạng thái trả về 404

Yêu cầu là sau đây:

Request Method:POST 
Status Code:404 Not Found (from cache) 
Request Headersview source 
Accept:application/json, text/plain, */* 
Content-Type:text/plain 
Origin:file:// 
User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 
Request Payloadview source 
{,…} 

Mã của phương pháp được thực hiện yêu cầu từ xa sau:

// set transfer credentials 
       $http({ 
        method : 'POST', 
        url : $scope.remoteUrl, 
        data: {img_base64: "/9j/4AAQSkZ"}, 
        headers: 'application/json', 
        timeout: 10000 
        // success response 
       }).success(function(data, status, headers, config) { 
        //SUCESSS 
        } else { 
        //PROCESSING ERROR      
} 

        // error response 
       }).error(function(data, status, headers, config) { 
        // ERROR 
       }); 

tôi đã cố gắng để giải quyết nó bằng chủ đề này:

AngularJs $http.post() does not send data

Angular + Ionic Post request getting 404 not found

Nhưng không may mắn.

Server side đang xử lý yêu cầu bằng cách này:

$inputJSON = file_get_contents('php://input'); 
    $input= json_decode($inputJSON, TRUE); //convert JSON into array 

Nếu tôi đang cố gắng để gửi yêu cầu sử dụng Postman hoặc Curl tất cả mọi thứ dường như được làm việc.

thông tin Ionic:

Node Version: v0.12.2 
Cordova CLI: 5.0.0 
Ionic CLI Version: 1.3.22 
Xcode version: Xcode 6.3.1 Build version 6D1002 
ios-sim version: Not installed 
ios-deploy version: Not installed 

AngularJS phiên bản:

"version": "1.3.13", 

Làm thế nào tôi có thể giải quyết nó xin vui lòng?

Rất cám ơn cho lời khuyên nào

Trả lời

40

Hum, tôi chỉ gặp vấn đề tương tự: tiêu đề gợi ý rằng nó đã được tìm nạp from cache ... Nhưng thực ra, có vẻ như nó phải làm với chính sách bảo mật mới trong các phiên bản mới của Cordova.

Đây là cách tôi giải quyết nó:

Tôi đã cài đặt Cordova's whitelist plugin:

cordova plugin add cordova-plugin-whitelist 

Sau đó, thêm chính sách nội dung của bạn trong index.html bạn như là một thẻ meta (sử dụng máy chủ của riêng bạn hoặc '*' cho chấp nhận mọi yêu cầu):

<meta http-equiv="Content-Security-Policy" content="default-src 'self' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *;script-src 'self' localhost:35729 'unsafe-eval' 'unsafe-inline';"> 

default-src được sử dụng cho các yêu cầu chung; máy chủ ws://localhost:35729 được sử dụng để tải lại trực tiếp trong ionic serve.

script-src được sử dụng để thực hiện kịch bản an toàn

unsafe-inlineunsafe-eval được yêu cầu để cho góc làm việc đúng cách.

data: gap: https://ssl.gstatic.com chỉ được sử dụng trên iOS.

self có nghĩa là máy chủ hiện tại của tệp index.html.

Bạn sẽ phải thêm của riêng mình để các yêu cầu của bạn hoạt động. Đừng quên thêm giao thức và cổng nếu chúng không tiêu chuẩn

Bạn có thể bỏ qua thẻ meta nếu không muốn, nhưng bạn sẽ nhận được nhiều cảnh báo từ plugin danh sách cho phép.

Thông tin thêm về cách định cấu hình này trong the plugin's readme.

Sau đó, tạo lại ứng dụng và ứng dụng sẽ hoạt động trở lại.

+0

Cảm ơn, đó là một giải pháp đúng. – redrom

+0

Tìm thấy điều này một cách khó khăn bằng cách xây dựng với một phiên bản mới hơn của Phonegap Build. Được kéo ra tóc của tôi tự hỏi tại sao các ứng dụng đã làm việc tốt trên các thiết bị khác nhưng không phải trên một thiết bị Android đặc biệt này ... cảm ơn bạn. – ScottN

+0

Cùng probleme nhưng điều này không làm việc, cài đặt lại cordova-plugin-whitelist đã giải quyết được probleme bạn cũng có thể tìm https://forum.ionicframework.com/t/ionic-angular-http-post-results-in-a-404- nhưng chỉ--on an-android-phone-không-trên-một-iphone-hoặc-in-the-trình duyệt/28999/14 – HugoPoi

-2

Các (from cache) trong tình trạng phản ứng cho thấy rằng trình duyệt của bạn lưu trữ trả lời xấu và đang chơi nó lại cho bạn. Thử xóa bộ nhớ cache hoặc sử dụng bất kỳ kỹ thuật chặn truy xuất bộ nhớ cache nào.

+0

Cảm ơn, nhưng điều đó thật lạ vì đó là cài đặt mới trên thiết bị. Bạn đang đề xuất sử dụng cái nào cho tôi? i nên thêm một số tiêu đề ở phía máy chủ? – redrom

1

tôi vất vả trong một thời gian khá với điều này, nhưng các trick là để cài đặt plugin, cấu hình CSP trong index.html và sau đó loại bỏ các plugin một thêm một lần nữa.

4

Tôi cũng có vấn đề này và đã tìm kiếm rất nhiều rồi cuối cùng ... tôi loại bỏ các plugin whitelist:

cordova plugin remove cordova-plugin-whitelist 

sau đó renstalled nó

cordova plugin add cordova-plugin-whitelist 

Nó đã giúp tôi và hy vọng nó giải quyết của bạn vấn đề

Các vấn đề liên quan