详解Vue 开发模式下跨域问题

网友投稿 256 2023-05-09


详解Vue 开发模式下跨域问题

设置请求头部

后端设置请求头部Access-Control-Allow-Credentials: true和Access-Control-Allohttp://w-Origin: xxx.com

前端post请求设置withCredentials=true

这里用了axios的请求数据方法代码如下:

import axios from 'axios'

import config from '../config'

export default {

request (method, uri, data, headerConfig = {withCredentials: true}) {

if (!method) {

console.error('API function call requires method argument')

return

}

if (!uri) {

console.error('API function call requires uri argument')

return

}

let url = config.serverURI + uri

return axios({ method, url, data, ...headerConfig })

}

}

jquery的$.ajax::

$.ajax({

type: "POST",

url: "http://xxx.com/api.php",

dataType: 'json',

xhrFields: {

withCredentials: true

},

crossDomain: true

}).then((json) => {

// balabala...

})

使用nodejs做代理

var path = require('path')

module.exports = {

build: {

env: require('./prod.env'),

index: path.resolve(__dirname, '../xxx/index.html'),

assetsRoot: path.resolve(__dirname, '../xxx'),

assetsSubDirectory: 'static',

assetsPublicPath: '/',

productionSourceMap: true,

productionGzip: false,

productionGzipExtensions: ['js', 'css']

},

dev: {

env: require('./dev.env'),

port: 8080,

assetsSubDirectory: 'static',

assetsPublicPath: '/',

proxyTable: {

'/api': {

target: 'http://xxx.com/api.php/',

changeOrigin: true,

pathRewrite: {

'^/api': '/'

}

}

},

cssSourceMap: false

}

}

这里target为目标域名,pathRewrite为转换规则,请求数据时将接口地址 根据转换规则请求就可以解决跨域啦!(这里也可以配置headers,设置cookis,token等)

jsonp

jsonp也是一种解决跨域的方法,不过我从来没有用过,在网上查了下资料,jsonp的原理是script标签引入js是不受域名限制的, 由于是模拟插入script标签, 所以不可以用post请求。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java 实现两个接口(一个java接口可以实现另一个java接口)
下一篇:接口实现类快捷键(接口的实现类怎么创建)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~