API 开发模式下的请求与生产模式下的请求不同
API request different in dev mode than in prod mode
我有一个 vue.js cli 客户端,它使用驻留在 Azure 上的 API(我开发了客户端和 API)。
当我 运行 客户端处于开发模式(npm 运行 服务)时,我的 API 正确响应状态代码 200。但是,当我构建生产版本时(npm 运行 build) 和 运行 本地的 dist 版本 (serve -s dist),我的 API 调用被拒绝(400 错误请求)。
构建过程似乎正在以不同的方式进行编译。
我的 ApiService.js 代码片段:
import axios from 'axios'
const apiURL = 'https://my-api.azurewebsites.net/'
const apiClient = axios.create({
baseURL: apiURL,
withCredentials: false,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
})
userLogin(credentials) {
return apiClient.post('/login', credentials)
}
This is the diff of the two API calls
当我在生产模式下调用 API 时,浏览器报告了一个 cors 问题:
Access to XMLHttpRequest at 'https://my-api.azurewebsites.net/login' from origin 'http://www.mysite.ch' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在网上花了很多时间寻找解决方案,但没有成功。欢迎任何提示。
我怀疑它在本地工作,因为您的本地域正在传递 CORS 请求。归根结底,这只是一个 CORS 配置问题。您的生产域尚未列入白名单。我不确定您的后端是什么或 Azure 如何影响它,但您需要将您的生产域列入白名单以供 API 使用。
这是在 Express 中设置 CORS 策略的示例:https://flaviocopes.com/express-cors/
请确保您不允许所有来源,因为这存在安全风险。
我有一个 vue.js cli 客户端,它使用驻留在 Azure 上的 API(我开发了客户端和 API)。 当我 运行 客户端处于开发模式(npm 运行 服务)时,我的 API 正确响应状态代码 200。但是,当我构建生产版本时(npm 运行 build) 和 运行 本地的 dist 版本 (serve -s dist),我的 API 调用被拒绝(400 错误请求)。
构建过程似乎正在以不同的方式进行编译。
我的 ApiService.js 代码片段:
import axios from 'axios'
const apiURL = 'https://my-api.azurewebsites.net/'
const apiClient = axios.create({
baseURL: apiURL,
withCredentials: false,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
})
userLogin(credentials) {
return apiClient.post('/login', credentials)
}
This is the diff of the two API calls
当我在生产模式下调用 API 时,浏览器报告了一个 cors 问题:
Access to XMLHttpRequest at 'https://my-api.azurewebsites.net/login' from origin 'http://www.mysite.ch' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在网上花了很多时间寻找解决方案,但没有成功。欢迎任何提示。
我怀疑它在本地工作,因为您的本地域正在传递 CORS 请求。归根结底,这只是一个 CORS 配置问题。您的生产域尚未列入白名单。我不确定您的后端是什么或 Azure 如何影响它,但您需要将您的生产域列入白名单以供 API 使用。
这是在 Express 中设置 CORS 策略的示例:https://flaviocopes.com/express-cors/
请确保您不允许所有来源,因为这存在安全风险。