2015-05-11 13 views
22

câu hỏi này một phần trỏ đến câu hỏi trước của tôi: Ionic + Angular POST request return state 404Ionic + Góc - Làm thế nào để tránh "404 Không tìm thấy (từ bộ nhớ cache)" sau khi yêu cầu POST?

Nhưng tôi không thể tìm được giải pháp làm việc.

Vấn đề là sau đây:

nếu tôi làm theo yêu cầu từ các ứng dụng di động chạy trên thiết bị i luôn luôn nhận được phản hồi 404:

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 
{,…} 

Nhưng nếu tôi đã cố gắng yêu cầu tương tự trên máy tính để bàn sử dụng plugin Postman trong trình duyệt Chrome, tôi luôn nhận được phản hồi 200 với dữ liệu tôi cần.

Tôi nghĩ rằng đó là vấn đề gây ra bởi phương pháp http Angular nhưng trong bài trước tôi đã nhận thấy điều đó là không đúng sự thật.

Làm cách nào để tránh điều này? Tôi có nên đặt một số tiêu đề trong HTML của ứng dụng, trong khi yêu cầu hoặc ở phía máy chủ (PHP) không?

Rất cám ơn mọi lời khuyên.

EDIT:

Tôi cũng đã cố gắng thiết lập bộ nhớ cache: false bằng cách này:

$http({ 
       method : 'POST', 
       url : $scope.remoteUrl, 
       data: postData, 
       headers: headersData, 
       cache: false, 
       timeout: 10000 
       // success response 
      }) 

Nhưng không may mắn.

+0

Bạn đã thử '{cache: false}' chưa? – Zee

+0

Xin chào, tôi vừa cập nhật câu hỏi của mình. Thuộc tính cache có được đặt đúng trong yêu cầu của tôi không? – redrom

+0

Có thể là sự cố với máy chủ PHP của bạn. Hãy thử 'header (" Cache-Control: không lưu trữ, no-cache, phải-revalidate ");' trong PHP. – Zee

Trả lời

44

A lot of peopleexperiencing that.

Tôi vừa gặp sự cố tương tự. Dường như nó phải làm với một 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 tất cả 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ó - chính xác là như vậy. Đập đầu tôi khoảng một giờ. cảm ơn! –

+0

Nhiều thx: D !!! –

+0

OMG cảm ơn bạn rất nhiều! –

19

Đã có một vấn đề tương tự, không có gì giúp, sau đó tôi chỉ cần loại bỏ các plugin whitelist:

cordova plugin remove cordova-plugin-whitelist 

sau đó renstalled nó

cordova plugin add cordova-plugin-whitelist 

sau đó nó làm việc

+3

Bạn có nghĩa là 'plugin cordova' tôi đoán? – j0k

+0

Siêu hoạt động !!! – praveenpds

+1

Xin cảm ơn các bạn! Lỗi này khiến tôi mất một ngày làm việc. –

4

tôi đã cùng một vấn đề và Tôi có thể giải quyết vấn đề bằng cách thêm plugin sau:

ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git 
.210
3

Sau nhiều giờ, tôi tìm thấy một giải pháp mà làm việc: chạy config.xml cordova plugin add cordova-plugin-whitelist

Trong trường hợp của tôi, tôi đã cấu hình và index.html về nguồn gốc, như đã đề cập ở đây và các nơi khác.

0

Tôi gặp sự cố tương tự với dấu hiệu Firebase trên thiết bị Android của mình nhưng tôi có thể đăng nhập trên trình duyệt.

cordova plugin remove cordova-plugin-whitelist 
cordova plugin add cordova-plugin-whitelist 

Sử dụng các dòng trên để giải quyết vấn đề.

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