Access-Control-Allow-Origin-Fehler, wenn man im WordPress-posts in Phonegap-app
Hoffentlich kann mir jemand helfen, beheben Sie das folgende problem bei der Entwicklung einer mobile-app in phonegap. Ich bin versucht zu Lesen Beiträge aus einem wordpress-installation, aber ich bekomme diese Fehlermeldung, wenn ich meine index.html Seite in chrome
XMLHttpRequest cannot load Ursprung null ist nicht erlaubt, Access-Control-Allow-Origin.
Habe ich JSON-API-plugins in wordpress und wenn ich navigieren Sie zu der Seite, ich will, ich kann es mit ok. Mein code ist wie folgt:
<!DOCTYPE HTML>
<html>
<header>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
function readSinglePost (url,target_div) {
var URL = url//+"&callback=?";
console.log(URL);
jQuery.ajax({
url: URL,
dataType: 'json',
success: function(data) {
console.log(data);
jQuery(target_div).append("<h1>"+data.post.title+"</h1>");
jQuery(target_div).append(data.post.content);jQuery(target_div).
append("<small>"+data.post.date+"</small>");
console.log(data.post.content);
}
});
}
jQuery(document).ready(function() {
var url = "http://www.example.com/api/get_post/?json=get_post&dev=1&id=5486";
var target_div = "#contents";
readSinglePost(url, target_div);
});
</script>
</header>
<body>
<div id="main">
<div id="title"></div>
</div>
</body>
</html>
UPDATE
In Antwort auf Jamie unten
Raw Anfrage
GET /api/get_post/?json=get_post&dev=1&id=5486 HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Origin: null
Connection: keep-alive
Raw Antwort
HTTP/1.1 200 OK
Date: Fri, 05 Jul 2013 16:51:49 GMT
Server: Apache/2.2.11 (Unix)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Pingback: http://www.example.com/xmlrpc.php
Set-Cookie: PHPSESSID=f6308c2732752bbb1149b345018bdf68; path=/
Set-Cookie: wc_session_cookie_a111a960a9b29354988b3de48943ad50=IRhSF41ZHIBHMA3mmCCSSjdOSxqXf2wj%7C%7C1373215910%7C%7C1373212310%7C%7Cd472ed970a72ba78e8b2c836a1d8b2cc; expires=Sun, 07-Jul-2013 16:51:50 GMT; path=/; httponly
Set-Cookie: woocommerce_items_in_cart=0; expires=Fri, 05-Jul-2013 15:51:50 GMT; path=/
Set-Cookie: woocommerce_cart_hash=0; expires=Fri, 05-Jul-2013 15:51:50 GMT; path=/
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/plain; charset: UTF-8
Content-Length: 57602
InformationsquelleAutor ILI | 2013-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also das problem, dass Sie gemeinhin als Cross-Origin-Security. Grundsätzlich sind die meisten web-Browser erlauben Ihnen nicht, ziehen Sie Inhalte von Servern außerhalb Ihrer eigenen, es sei denn, der server sagt, es ist ok. Um dies zu tun, muss der server, um zu sehen, eine akzeptable
Access-Control-Allow-Origin
im Header.Die gute Nachricht ist, dass dies relativ einfach zu beheben ist, als Bowdenweb Punkte in Wie aktiviert cors in WordPress.
Müssen Sie nur fügen Sie die entsprechenden header an den
headers.php
- Datei, wie soUpdate 1
Als ILI darauf hingewiesen, es gibt ein plugin für WordPress namens WordPress-Cross-Domain-Plugin, die dieses Problem behoben für ihn.
Ich würde empfehlen, immer eine Kopie von Fiddler2 für Windows. Dieser fungiert als proxy, und können Sie prüfen alle web-traffic. Sie können dann sehen, all die Anfragen und Antworten, die wahrscheinlich ermöglichen es Ihnen, zusätzliche Informationen zu liefern.
Hi Jamie, ich habe einen Blick mit Fiddler2 und nichts offensichtlich scheint leider noch immer der Fehler.
Was für ein Ergebnis-code sind Sie immer auf??? 200? Wären Sie in der Lage zu veröffentlichen die Raw Request-und Response-Header?
Hi ja es ist die 200. Ich habe bearbeitet Sie die Frage, gehören die Raw-Request-und Response-Header.. ich hoffe es sind die richtigen von Fiddler. Vielen Dank für Eure Hilfe
InformationsquelleAutor Jamie Starke
Browser nicht erlauben cross-domain-Aufrufe in ajax standardmäßig. Jamie Starke gibt Ihnen die Antwort. Vielleicht versuchen
$.support.cors = true;
mit JQuery. Trotzdem, eine Phonegap-app kann tun, ajax, cross-domain-requests. Wenn Sie nicht können, überprüfen Sie Ihre config.xml http://docs.phonegap.com/en/edge/guide_whitelist_index.md.html<access origin="*"/>
InformationsquelleAutor guillaumeb
in der config-Datei
InformationsquelleAutor Sammeta Srikanth
Diejenigen, die noch Probleme mit Access-Control-Allow-Origin trotz Wildcard Ihre config.xml vielleicht möchten Sie check this out, wenn Sie mit Jellybean. Von dem, was ich sammeln können, es ist fest in die neueste version von phonegap, aber die installation der neuesten version ist darüber hinaus meine begrenzte Talente!
Lesen: Phonegap/Cordova App-Pausen in der Jelly-Bean - Access-Control-Allow-Origin und setAllowUniversalAccessFromFileUrls
InformationsquelleAutor Jon Bray