質問: <目的> 新規会員登録のメールアドレス入力時に、入力間違えや不正登録を阻止するため <やりたいこと> ユーザーが入力したドメインが存在しているかチェックする機能を実装したい ※可能であればクライアントサイドで、リアルタイムに存在チェックをしたい <使用言語> Java、Javascript <調べたこと、参照したもの> ▼PHPでのメールアドレス判定について PHPで文字列がメールアドレスか判定するには? ▼JavaでのMXレコードを用いたメールサーバー判定 <質問> クライアントサイドでドメインチェックをする方法がありましたらご教授いただけますでしょうか? (初心者で実現性など加味できていないかと思います、、) バッチ処理などでメールドメイン名を蓄えておいて、それと入力メールドメインを照らしあわせるなど、妥協案でも構いませんのでご助言を頂ければ助かります!
回答: 「ドメインが存在しているか」の定義を示されていないので、私はでたらめなドメインでないことを確認したい意図と解釈して、whoisを照会することとしました。jsonpでのwhois照会サービスを利用します。参考 ``` var baseURL = 'https://www.whoisxmlapi.com/whoisserver/WhoisService?'; var checkDomain = function (domain, callback) { var callback = callback || function () {}, callbackName = '__checkDomain_jsonp_callback_' + Date.now(); window[callbackName] = function (data) { callback(null, data.WhoisRecord); }; var jsonpElement = document.createElement('script'); jsonpElement.src = baseURL + 'outputFormat=json&domainName=' + encodeURIComponent(domain) + '&callback=' + callbackName; jsonpElement.onerror = function (err) { callback(err); }; document.body.appendChild(jsonpElement); }; // example checkDomain('example.com', function (err, data) { console.log(err, data); if (data.dataError) { // たぶんこのプロパティがあるとwhoisが見当たらない→利用不可 } }); checkDomain('example-not-exists-not-available.com', function (err, data) { console.log(err, data); if (data.dataError) { // たぶんこのプロパティがあるとwhoisが見当たらない→利用不可 } }); ``` ここまで書いて、コメントを見て気付きましたが、DNSのMXレコードをチェックしたほうが確実かもしれませんね。そちらもhttpリクエストで利用できるサービスがあれば、同様にしてできると思いますし、コメントにあるように自前でhttpリクエストを受け付けるサーバーサイドのプログラムを用意してもいいかもしれません。