2015-05-28 16 views
5

Làm thế nào để thực hiện yêu cầu http tên miền chéo trong Ionic Framework trên Android?Cách thực hiện yêu cầu http tên miền chéo trong Ionic Framework trên Android?

Tôi đã cố gắng đặt proxy trong ionic.project, không hữu ích. Đây là cách tôi làm theo yêu cầu:

$http.get('http://localhost:8100/getnews/?hashcode=' + hashcode + '').then(function (resp) { 
     ... 
    }, function (err) { 
     ... 
    } 

Dưới đây là ionic.project:

{ 
    "name": "...", 
    "app_id": "...", 
    "proxies": [ 
     { 
     "path": "/getnews", 
     "proxyUrl": "http://yukigaru.pythonanywhere.com/getnews/" 
     } 
    ] 
} 

Nó không hoạt động trên Android, function (err) chi nhánh luôn được gọi. Nó hoạt động trên trình duyệt của một máy tính và không hoạt động trên trình duyệt của máy tính khác.

Cordova 5.0.0, Ionic 1.3.20, Android 5.x.

+0

bạn đang sử dụng phonegapp hoặc cordova? nếu vậy hãy đảm bảo rằng nguồn gốc truy cập được đặt chính xác, hãy xem: [cross origin] (http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html) – Praveen

+0

trình duyệt nào bạn đang nói về? chrome? I E? –

+0

Bạn đang sử dụng phiên bản 4 của nền tảng cordova-android hoặc phiên bản cũ hơn? nếu sử dụng phiên bản 4, bạn phải đảm bảo bạn có plugin plugin cordova-plugin-whitelist trong dự án của mình. – QuickFix

Trả lời

0

Những gì tôi đã kết thúc làm trong ứng dụng Ionic của tôi là tôi đã thêm này vào file PHP mà đóng như JSON API (và mà tôi gọi từ ứng dụng Ionic):

header('Access-Control-Allow-Origin: *'); 

Vì vậy, nếu bạn kiểm soát của bạn Máy chủ điểm cuối API và có thể thực hiện tương tự (bạn đã không đề cập đến việc sử dụng API mà bạn sử dụng?), Bạn nên ổn. Nếu có ai có trường hợp sử dụng tốt hơn, vui lòng trả lời ...

0

localhost là "máy này", đó là lý do máy hoạt động trên máy chủ và không hoạt động trên các máy khác.

Thay đổi localhost đến IP cục bộ của máy với máy chủ, một cái gì đó giống như 192.168.1.X

0

Nếu bạn cố gắng để gọi dịch vụ bên ngoài xuất xứ của bạn thì bạn nên thêm Access Control Headers ở phía máy chủ, khác thay vì $ http.get bạn có thể thử $ http.jsonp (tôi đã không thử phương pháp này).

Tôi hy vọng điều này sẽ giúp bạn.

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