前提・実現したいこと
個人開発で公開されている郵便番号検索APIを使用し、
入力値によって住所検索ができるようにしたい。
ローカル環境でAPIを叩いてみるとCORS関連のエラーが発生。
一通り調べるも自身で解決できなかったため、ご教授いただけると幸いです。
発生している問題・エラーメッセージ
Access to XMLHttpRequest at 'https://zipcloud.ibsnet.co.jp/api/search' from origin 'http://127.0.0.1' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
該当のソースコード
React
1import React, { useState } from "react"; 2import ReactDOM from "react-dom"; 3import Button from "../../atoms/Button"; 4import { divide } from "lodash"; 5import { 6 BrowserRouter as Router, 7 Route, 8 Switch, 9 useParams, 10 useHistory, 11 useLocation 12} from "react-router-dom"; 13import { css } from "emotion"; 14import Header from "../TopPage/layout/Header"; 15 16function Register() { 17 const history = useHistory(); 18 axios.defaults.withCredentials = true; // global に設定してしまう場合 19 20 const [userInfo, setUserInfo] = useState({ 21 userName: "", 22 mail: "", 23 password: "", 24 zipCode: "", 25 prefectures: "", 26 city: "", 27 address: "" 28 }); 29 30 const handleRegisterClick = () => { 31 history.push("/"); 32 }; 33 const handleBackClick = () => { 34 history.goBack(); 35 }; 36 const handleAddressSearch = async () => { 37 const URL = "https://zipcloud.ibsnet.co.jp/api/search"; 38 try { 39 const res = await axios.get(URL, { 40 zipcode: userInfo.zipCode 41 }); 42 console.log(res); 43 } catch (e) { 44 console.log(e); 45 } 46 }; 47 return ( 48 <div> 49 <h1>サービスタイトル</h1> 50 <form action=""> 51 <div> 52 <label htmlFor="">ニックネーム</label> 53 <br /> 54 <input 55 type="text" 56 placeholder="名前を入力してください" 57 />{" "} 58 </div> 59 <div> 60 <label htmlFor="">メールアドレス</label> 61 <br /> 62 <input 63 type="text" 64 placeholder="メールアドレスを入力してください" 65 />{" "} 66 </div> 67 <div> 68 <label htmlFor="">パスワード</label> 69 <br /> 70 <input 71 type="text" 72 placeholder="7文字以上半角英数字で入力してください" 73 />{" "} 74 </div> 75 <div> 76 <label htmlFor="">郵便番号</label> 77 <br /> 78 <div> 79 <input 80 type="text" 81 placeholder="郵便番号を入力してください" 82 onChange={e => { 83 setUserInfo({ 84 ...userInfo, 85 zipCode: e.target.value 86 }); 87 }} 88 />{" "} 89 <button type="button" onClick={handleAddressSearch}> 90 検索 91 </button> 92 </div> 93 </div> 94 <div> 95 <label htmlFor="">都道府県</label> 96 <br /> 97 <input 98 type="text" 99 placeholder="都道府県を入力してください" 100 />{" "} 101 </div> 102 <div> 103 <label htmlFor="">市区町村</label> 104 <br /> 105 <input 106 type="text" 107 placeholder="市区町村を入力してください" 108 />{" "} 109 </div> 110 <div> 111 <label htmlFor="">番地以降</label> 112 <br /> 113 <input 114 type="text" 115 placeholder="番地やビル名など入力してください" 116 />{" "} 117 </div> 118 119 <div> 120 <Button text="登録する" onClick={handleRegisterClick} /> 121 <Button text="戻る" onClick={handleBackClick} /> 122 </div> 123 </form> 124 </div> 125 ); 126} 127 128export default Register; 129
試したこと
https://qiita.com/tomoyukilabs/items/81698edd5812ff6acb34
https://qiita.com/k-shimoji/items/acbbbb49530fb97f5893
上記文献を参考に、一通り実装するも問題解決ならず。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 10:12