vue中解决跨域问题

方法1.后台更改header

header(‘Access-Control-Allow-Origin:*‘);//允许所有来源访问
header(‘Access-Control-Allow-Method:POST,GET‘);//允许访问的方式   

方法2.使用JQuery提供的jsonp

methods: {
  getData () {
    var self = this
    $.ajax({
      url: ‘http://f.apiplus.cn/bj11x5.json‘,
      type: ‘GET‘,
      dataType: ‘JSONP‘,
      success: function (res) {
        self.data = res.data.slice(0, 3)
        self.opencode = res.data[0].opencode.split(‘,‘)
      }
    })
  }
} 

方法3.使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建)

例如请求的url:“http://f.apiplus.cn/bj11x5.json

1、打开config/index.js,在proxyTable中添写如下代码:

proxyTable: {
  ‘/api‘: {  //使用"/api"来代替"http://f.apiplus.c"
    target: ‘http://f.apiplus.cn‘, //源地址
    changeOrigin: true, //改变源
    pathRewrite: {
      ‘^/api‘: ‘http://f.apiplus.cn‘ //路径重写
      }
  }
}

2、使用axios请求数据时直接使用“/api”:

getData () {
 axios.get(‘/api/bj11x5.json‘, function (res) {
   console.log(res)
 })

通过这中方法去解决跨域,打包部署时还按这种方法会出问题。解决方法如下:

let serverUrl = ‘/api/‘  //本地调试时
// let serverUrl = ‘http://f.apiplus.cn/‘  //打包部署上线时
export default {
  dataUrl: serverUrl + ‘bj11x5.json‘
}

附:

方法二引入jq

1.下载依赖

cnpm install jquery --save-dev

2.在webpack.base.conf.js文件中加入

plugins: [
    new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery"
    })
 ],

3.在需要的temple里引入也可以在main.js里全局引入

import $ from ‘jquery‘

eg:

<template>
  <div class="source">
      source{{data}}
  </div>
</template>

<script>
import $ from ‘jquery‘
  export default({
    name:"source",
    data(){
      return{
        data:""
      }
    },
    created(){
      this.getData()
    },
    methods:{
      getData () {
        var self = this
        $.ajax({
          url: ‘你要请求的url‘,
          type: ‘GET‘,
          dataType: ‘JSONP‘,
          success: function (res) {
            self.data = res.result
          }
        })
      }
    }
  })
</script>

<style>

</style>
时间: 2024-08-01 00:45:14

vue中解决跨域问题的相关文章

vue cli 解决跨域 线上 nginx 反向代理配置

前后分离 axios 接 api 跨域问题如图: 解决办法: 1. npm start 本地开发环境解决: 在webpack配置文件 /config/index.js 里找到 proxyTable 开启代理 changeOrigin:true, proxyTable: { '/api':{ target:'http://xx.xx.xx.xx:5568', changeOrigin:true, pathRewrite:{ '^/api':'/api' } } }, 2. npm run buil

django + vue.js 解决跨域问题

浏览器跨域报错:"No: Access-Control-Allow-Origin":  解决方案1: 在view视图函数中 给封装好的list_查看这个方法这个函数给父类 clss Oldboy (ModelViewset): queryst =Course.objects.all() serializer_Class =CoureSerializer def list(self,request,*args,**kwargs) response = super().list(reque

Django中解决跨域请求问题

目录 解决办法 1. 新建一个中间件,路径为:Django项目/your_app/core.py, 2. 在 项目/setting.py中, 新增 解决办法 通过django中间件进行添加跨域头 1. 新建一个中间件,路径为:Django项目/your_app/core.py, 内容如下 from django.middleware.common import CommonMiddleware class MiddlewareMixin: def __init__(self, get_respo

vue项目中解决跨域问题axios和

项目如果是用脚手架搭建的(vue cli)项目配置文件里有个proxyTable proxyTable是vue-cli搭建webpack脚手架中的一个微型代理服务器,配置如下 配置和安装axios 安装npm install axios 引用: 参考:https://blog.csdn.net/wh_xmy/article/details/87705840 原文地址:https://www.cnblogs.com/whdaichengxu/p/12340914.html

vue中的跨域

proxyTable: { '/zabbix_api': { target: 'http://10.88.22.8',//设置你调用的接口域名和端口号 别忘了加http changeOrigin: true, pathRewrite: { '^/zabbix_api/': '/zabbix_api/', } }, '/passwd': { target: 'http://10.88.22.8',//设置你调用的接口域名和端口号 别忘了加http changeOrigin: true, pathR

vue中axios跨域问题

main.js配置 import axios from 'axios' axios.defaults.baseURL = 'http://www.zhizous.cn:81/test';//请求的域名 // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';这样设置那就错啦[需要使用request拦截器] /**http request 拦截器**/ a

vue开发环境和生产环境里面解决跨域的几种方法

  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据.源指协议,端口,域名.只要这个3个中有一个不同就是跨域. 这里列举一个经典的列子: #协议跨域 http://a.baidu.com访问https://a.baidu.com: #端口跨域 http://a.baidu.com:8080访问http://a.baidu.com:80: #域名跨域 http://a.baidu.com访问http://b.baidu.com:   现在很多公司都是采用前后分离的方式开发.那么出现经常和会

vue webpack配置解决跨域问题

现在基本项目都是实行前后端分离的原则,不管是ng 或者是vue 在开发中都无法避免跨域的这个问题 本人刚上手第一个vue项目,在调用api的时候出现了跨域的这个问题 这是封装好一个简单的post 请求 http.js post (url, data) { return axios({ method: 'post', baseURL: '/api', url, data: data, timeout: 10000, headers: { 'X-Requested-With': 'XMLHttpRe

解决跨域问题以及Django中POST传递参数错误

一.跨域 在进行前后端开发的时候需要涉及到跨域的问题,跨域既可以在前端解决也可以在后端解决.前段解决的思路就是转换路径,将发出的请求的url地址转换成可以映射成的地址.后端的解决思路是将获取的地址转换成可以映射的地址. 1. 模型 1.1 前端跨域解决的模型 由于路由router的不同,因此在跨域请求的时候通过更换请求源为origin再对后端进行请求 1.2 后端跨域解决的模型 后端通过可接收的url来进行相同path的处理,揭示了前后端分析的关键点以及跨域解决的本质,即对相同的path进行不同