从源“http://localhost:3000”访问“https://***”处的 XMLHttpRequest 已被 CORS 策略阻止

Posted

技术标签:

【中文标题】从源“http://localhost:3000”访问“https://***”处的 XMLHttpRequest 已被 CORS 策略阻止【英文标题】:Access to XMLHttpRequest at 'https://***' from origin 'http://localhost:3000' has been blocked by CORS policy 【发布时间】:2020-11-11 17:46:31 【问题描述】:

我正在尝试使用 axios 发送请求,但我遇到了 CORS 问题, 这是我的 nuxt.config.js

plugins: [
"@/plugins/axios/apiService.js",
],
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy',
  ],
  
  axios: 
    baseURL: process.env.API_URL,
    proxy: true,
    credentials: false
  ,
  proxy: 
    '/api': 
      target: 'https://dev.mobit.ir/api/web/v4',
      pathRewrite: 
        '^/api' : '/'
        ,
      changeOrigin: true,
      
  ,

这是我的 apiService

import axios from "axios";
import  API_URL from "./config";

export const axiosInstance = axios.create(
  headers: 
    Accept: 'application/json',
  
);

//Set base url for axios requests
axiosInstance.defaults.baseURL = API_URL;

export const ApiService = 
  
  //resource: api address
  get(resource, params = "") 
    return axiosInstance.get(resource, params).catch(error => 
      throw new Error(`[RWV] ApiService $error`);
    );
  ,

  post(resource, params) 
    return axiosInstance.post(`$resource`, params);
  
;

我尝试根据 nuxt 文档设置代理,但它不起作用, 如果我使用像https://cors-anywhere.herokuapp.com/ 这样的代理,它会起作用,但为什么 nuxt 代理不起作用?我认为这不是正确的方法。 我必须使用 cookie 或中间件吗?

【问题讨论】:

【参考方案1】:

根据下面的链接,我们应该使用模块数组中的一个数组来定义代理,如下所示:

['@nuxtjs/proxy', pathRewrite: '^/api' : '/api/web/v4' ]

阅读更多链接: https://github.com/nuxt-community/proxy-module

【讨论】:

【参考方案2】:

在这种类型的 CORS 问题中,使用下面链接之类的扩展可以解决它,直到将其发布到主域中

https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=en#:~:text=Allow%20CORS%3A%20Access%2DControl%2DAllow%2DOrigin%20lets%20you,default%20(in%20javascript%20APIs).

【讨论】:

以上是关于从源“http://localhost:3000”访问“https://***”处的 XMLHttpRequest 已被 CORS 策略阻止的主要内容,如果未能解决你的问题,请参考以下文章

CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8000/api/puppies”获取

从源“http://localhost:3000”访问“http://127.0.0.1:5000/product”处的 XMLHttpRequest

从源“http://localhost:3000”访问“http://localhost:5000/api/products”的 XMLHttpRequest 已被 CORS 策略阻止:无“访问控制”

从源“http://localhost:3000”访问“https://***”处的 XMLHttpRequest 已被 CORS 策略阻止

CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:9900/jaxrs-post-example/rest/customers”获取

CORS 策略已阻止从源“http://localhost:3000”访问“https://randomuser.me/api/?results=4”获取: