基本的に、42matters.com APPマーケットAPIを使用して、Google Playストアからアプリの詳細や情報を取得していましたが、すべて正常に動作し、JSON応答を取得していましたが、週末の休日後にオフィスに戻ったときは、奇妙なエラーが発生し、何も返されませんでした。
私は次のような$ .getJSON関数を使用しました:
var packageID = 'com.whatsapp';
$.getJSON('https://42matters.com/api/1/apps/lookup.json?p='+packageID+'&access_token=accesstoken1234')
.done(function(appDetails) {
$('#logo').html(JSON.stringify(appDetails));
});
前述のように、これはデータを返していたので、それに応じてすべてを変更できましたが、今ではまったく理由もなくこのエラーが発生しています
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://42matters.com/api/1/apps/lookup.json?p=com.whatsapp&access_token=accesstoken1234. This can be fixed by moving the resource to the same domain or enabling CORS
私はPHPを使用してCORSを有効にしましたが、何も起こらず、Apacheのconfファイルを変更してCORSを有効にしようとしましたが、これでサービスが再起動しないため、立ち往生しています。
もう1つ、ブラウザーに上記のリンクを手動で入力すると、目的の結果が得られます。解決してください
CORSはブラウザ側でブロックされているため、AJAXは別のドメインからのデータを要求できません。42matters.comチームに連絡して、このようにcrossdomain.xmlを開いてください CORS jQuery AJAX request または 誰かが整形式のcrossdomain.xmlサンプルを投稿できますか?
または、AJAX Cross-Domainの回避策はJSONP: jQuery AJAX cross domain ですが、APIはサポートする必要がありますこの種の要求。
最後のことは、別のソースからデータを収集するためにAJAXを使用しないでください。モバイルプラットフォームの場合、これを行うにはネイティブHTTPリクエストオブジェクトが必要です。
私はそれが古い技術であることを知っていますが、私たちの何人かはまだこれに対処しなければなりません。
IIS6 Webサーバーを扱っている場合:
IIS7 –これをweb.configに追加します
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
この問題を解決するには、htmlファイルにベースタグを配置します。
<head>
<base href="http://www.otherdomain.com/xyz/">
</head>