非同期通信時のcontent-type: application/json;の必要性について教えてください。
Ajaxを用いて画面遷移させないお問い合わせフォームを作成しました。
その際
main.js
1 $.ajax({ 2 url: 'mail.php', 3 type:'POST', 4 dataType: 'json', 5 data: { 6 name: $('.input-name').val(), 7 email: $('.email').val(), 8 subject: $('.subject').val(), 9 message: $('.message').val() 10 },
dataType: 'json';として、返す値をjson形式に設定しました。
そしてphp側では
function.php
1 header('Content-Type: application/json; charset=utf-8');
と設定しレスポンスする形式をjsonにしました。
その後、お問い合わせの値をバリデーションにかけ、その結果をjson_decodeでjson形式に設定しAjaxに返しブラウザに表示することができました。
でも、
function.php
1 header('Content-Type: application/json; charset=utf-8');
この設定がなくてもレスポンスがtext/htmlとなるだけで同じようにjson_decodeで直したバリデーション結果をブラウザに表示させることができました。
となるとheader()はなぜ必要なのでしょうか?
ググるとxxs対策でcontent-type:をjsonにした方がいいと書いてる記事を見つけました。
この考え方以外にもheader('Content-Type: application/json; charset=utf-8');を設定する理由はありますか?
Ajaxの要求どおりjson_decodeによってjson形式で渡してるので何故必要なんだろうと思うのですが・・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/05 09:07