Javascript 当我访问我的组件时,为什么axios发出两个GET请求而不是一个?
我正在使用Quasar框架和Vue.js构建服务器端渲染(SSR)应用程序。我的应用程序的一部分涉及使用axios发出ajax请求。我注意到一些奇怪的axios行为,我将在下面描述 我在quasar中创建了一个axios引导文件:Javascript 当我访问我的组件时,为什么axios发出两个GET请求而不是一个?,javascript,vue.js,axios,quasar-framework,Javascript,Vue.js,Axios,Quasar Framework,我正在使用Quasar框架和Vue.js构建服务器端渲染(SSR)应用程序。我的应用程序的一部分涉及使用axios发出ajax请求。我注意到一些奇怪的axios行为,我将在下面描述 我在quasar中创建了一个axios引导文件: axios.js import axios from "axios"; export const api = axios.create({ baseURL: process.env.VUE_APP_API_URL }); api.defaul
axios.js
import axios from "axios";
export const api = axios.create({
baseURL: process.env.VUE_APP_API_URL
});
api.defaults.withCredentials = true;
export default ({ Vue, store }) => {
Vue.prototype.$axios = api;
store.$axios = api;
};
然后我在我的quasar.conf.js
文件中这样指定:
...
boot: [
'axios',
],
...
我的应用程序中有一个组件,我可以通过在浏览器中键入localhost.myapp.com:8082/scents/scents title
直接访问该组件。在这个组件中,我定义了一个预取
钩子,如下所示:
async preFetch({ store, currentRoute, ssrContext }) {
const { data } = await store.$axios.get("/v1/episodes/titles/" + currentRoute.params.slug)
store.commit('setEpisode', data)
},
这会向我的java后端发出两个请求。第一个请求有一个nullOrigin
头。第二个调用的非nullOrigin
头等于我的UI应用程序URL的值。我的java后端只允许特定的源代码值列表向其发出请求,因此第一个请求失败,因为源代码
头为null。这两种请求HTTP类型都是GET
请求。这里没有任何有意义的选项请求,因为我的理解是,GET
请求并不总是需要飞行前
以下是GET
request#1中的user-agent
标题。我觉得这很有趣。为什么该值正好axios/0.18.1
。我以前从未在水疗开发领域见过这种情况。同样,请求#1没有Origin
头。
以下是来自GET
request#2的user-agent
标题。这些更符合我的预期。
我应该注意到,如果我不直接访问浏览器中的localhost.myapp.com:8082/scents/scents title
,而是通过主页导航到它,则只会发出一个httpGET
请求,如果我直接访问浏览器中的同一url,我希望这是相同的行为
我想更好地理解,SSR开发是否有内在的原因,使得axios发送两个GET
请求,请求一个我不知道的简单HTTP请求。我是否需要在UI应用程序中的节点服务器上设置一些CORS策略?我从来没有遇到过这样的问题,axios对我来说一直都很直截了当