質問: ``` $.ajax({ type:'POST', url: URL, // POST送信先のURL crossDomain: true, contentType:'application/x-www-form-urlencoded', data: date, success: function(json_data) { if (!json_data[0]) { alert('Transaction error. ' + json_data[1]); return; } console.log(json_data); }, error: function() { alert('Server Error. Pleasy try again later.'); }, complete: function() { button.attr('disabled', false); } }); }); ``` 上記のような感じでWordpressで外部サービスにPOSTしたいのですが、 ``` XMLHttpRequest cannot load "送信先のURL". No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '送信元URL' is therefore not allowed access. ``` 上記のようなエラーを吐いてしまいます。 以下のような記事を参考にしましたがうまくいかず、wordpressの仕様でうまくいっていないのでしょうか?
回答: 本件「クロスドメイン」と言われる動作になっており、 javascriptが置いてあるサーバー(質問者様のサーバー)の問題ではなく ajaxでアクセスしようとしているサーバー(外部サービスのサーバー)の問題となります。 ご記載いただいているエラーにも記載されていますが。 レスポンスヘッダーにAccess-Control-Allow-Originが必要だが、ない。 と言われております。 Publicでサービスを公開しているのではない場合、APIキーの認証だったりドメインの登録、署名の登録が必要だったりします。 「外部サービス」側でAPIキーに認証が必要だったり、ドメイン指定が必要だったり、のようなユーザー設定項目が存在しませんでしょうか?