問題
- Laravelのpublicにバーチャルホストで開いている。
- Vue.jsとLaravelを連携している。
という条件の時、
Access to XMLHttpRequest at
のようなCORSエラーで通信できなかった。
origin = protocol + host + port らしいので、
ローカル同士でも、バーチャルホストでホスト名を変えてしまうとAjax通信ではブロックされてしまう。
解決法
下のページの通りにやるとできた。
.htaccess : CORSはMAMP LOCALHOSTでは有効になりません
……
Apacheのhttpd.confに許可設定を追記する。
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
上記でできない時は以下を行う。もしくは両方必要?
Header 〜とある下の3行を許可したいバーチャルホストのブロックに追記する。
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
## projectName
<VirtualHost *:80>
ServerName projectName.local.com
DocumentRoot "/www/projectName/"
Header set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, PUT, GET, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "Content-Type"
</VirtualHost>