AXIOS 请求方法更改为“OPTIONS”而不是“GET”

Kri*_*eil 5 reactjs axios react-typescript

我尝试使用 Axios 调用 React app(TSX) 和 API(这是我第一次使用 Axios),每次运行应用程序时,方法都会更改为“选项”并且请求变得无效。帮助将不胜感激。分享我的代码抱歉,出于安全原因,我隐藏了身份验证令牌。

代码

import React, { useState, useEffect } from 'react';
import axios from 'axios';

interface Brands {
  BrandId: number;
  Name: string;
}
const AUTH_TOKEN = Something hiden for security;


var baseUrl = axios.defaults.baseURL = 'https://fppdirectapi-prod.fuelpricesqld.com.au/Subscriber/GetCountryBrands?countryId=21';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.get['Content-Type'] = 'application/json';
axios.defaults.method = 'get';

const FetchFuelType = () => {
  const [brands, setPosts] = useState<Brands[]>([]);

  useEffect(() => {
    axios.get(baseUrl)

      .then(res => {
        console.log(res)
        setPosts(res.data)
      })
      .catch(err => {
        console.log(err)
      })
  }, [])
  return (
    <div>
      <ul>
        {brands.map(Brand => (<li key={Brand.BrandId}>{Brand.Name}</li>))}
      </ul>
    </div>
  );
};

export default FetchFuelType;
Run Code Online (Sandbox Code Playgroud)

附上回复图片 在此输入图像描述

jap*_*ott 12

OPTIONSrequest 是所谓的预检请求的一部分,需要弄清楚 CORS 标头,以了解需要/允许将哪些内容与实际GET请求一起发送到服务器。这就是为什么您通常会在网络选项卡中看到两个请求(取决于您的设置)

在您的示例中,您似乎没有在服务器上配置任何与 CORS 相关的内容(因此是 405),或者特别禁止除 GET/POST 请求之外的任何内容。或者该网站可能已禁止其他人访问其数据


Pra*_*mar 2

通常,options请求会在get触发调用之前自动发送,以获取一些初步数据get。检查此https://github.com/axios/axios/issues/475