我很难理解为什么这个请求给了我一个 CORS 错误。我相信我有服务器和客户端设置来正确使用端点。我可以向邮递员提出相同的请求并且它可以工作,所以我认为我在使用 JS 时做错了什么。服务器使用的是 Python 框架 Fastapi。客户端是 Vue,但请求使用 Axios(即 Javascript)。任何见解将不胜感激。
服务器设置
app = FastAPI(title="OptionStrats",
description="For fun fin-trial",
version="0.0.1",)
origins = ["*", "http://localhost:8080/"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
客户要求
axios({
method: "post",
url: "http://optionstrats.com/backtest",
headers: {
common: {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"Access-Control-Allow-Origin": "*"
},
data: request_dict,
crossDomain: true
})
.then(response => {
console.log("backtest response", response);
})
.catch(error => {
console.log(error);
});
日志
Starting Request
Object { url: "http://optionstrats.com/backtest", method: "post", data: {…}, headers: {…}, transformRequest: (1) […], transformResponse: (1) […], timeout: 0, adapter: xhrAdapter()
, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", … }
Backtest.vue:464
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://optionstrats.com/backtest. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Error: "Network Error"
createError createError.js:16
handleError xhr.js:81
我在 axios 请求标头中明确包含 Access-Control-Allow-Origin ,但似乎无法理解。我究竟做错了什么?谢谢。