通常情况下,解决跨域问题,只要在后端设置 Access-Control-Allow-Origin 就可以了,即允许什么样的来源可以访问,另外还有一些相关的配置,诸如Access-Control-Allow-Methods、Access-Control-Allow-Headers 等等。
还有一个容易忽视的点是,你的请求被浏览器直接拒绝发起。 参考资料:javascript.info/fetch-cross…
从浏览器的角度来看,跨源请求有两种:“安全”请求和所有其他请求。
“安全”请求必须满足以下条件:
- 方法:GET、POST 或 HEAD。
- Header - 我们只能设置:
Accept
Accept-Language
Content-Language
Content-Type 为值
application/x-www-form-urlencoded、multipart/form-data或text/plain。
而 axios 默认发起的请求 Content-Type 为 application/json
解决方法
为 axios 设置 header
const instance = axios.create({
baseURL: 'http://192.168.0.145:8080/m',
timeout: 1000,
headers: { 'content-type': 'application/x-www-form-urlencoded' },
});