鱼C论坛

 找回密码
 立即注册
查看: 3723|回复: 9

跨域问题

[复制链接]
发表于 2020-5-7 15:40:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wp231957 于 2020-5-7 15:48 编辑

前端:H5+VUE+AXIOS(非项目工程,就是一个单独的HTML文档)
网上很多资料都是修改配置文件,使用代理,可是我不是web工程,该咋修改代理?
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <title>vue+axios测试</title>

</head>

<body>
    <div id="w_1">
        <ul>
            <li v-for="item in jokes">{{item}}</li>
        </ul>
        <br><input type="button" value="get" class="get" v-on:click="getjoke">
    </div>
    <script>
        var url = "http://api.zhuishushenqi.com/ranking/gender";

        var app = new Vue({
            el: "#w_1",
            data: {
                jokes: ["狠好看的笑话"]
            },
            methods: {
                getjoke: function(event) {
                    let that = this;
                    axios.get(url).then((response) => {
                        console.log(response);
                    }, (err) => {
                        console.log(err);
                    });
                    //event.target.value="再来一批"
                },
            }
        })
    </script>
</body>

</html>

后台:NODE +EXPRESS
var express = require('express');
var http = require('http');
var fs = require('fs');
var app = express();
var path = require('path');

app.use(express.static(path.join(__dirname, 'public')));

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-type");
    res.header("Access-Control-Allow-Methods", "GET");
    next();
});

app.get('/', function(req, res, next) {
    res.writeHead(200, { 'Content-Type': 'text/html' })
    fs.readFile('./xiaoshuo.html', 'utf-8', function(err, data) {
        if (err) {
            throw err;
        }
        res.end(data);
    });
});

app.listen(3000);
console.log("监听端口 3000");
//console.log(app);

测试环境:chrome

几张相关图片:


补充, var url = "http://api.zhuishushenqi.com/ranking/gender"; 这个我单独在浏览器(CHROME)运行是能拿到数据
1.png
2.png
3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-10 13:01:01 | 显示全部楼层
有兴趣可以看看这个码云:https://gitee.com/wen_jun_zhang/agency_completion
自己写的项目  webpack搭建的
全栈 目前还在慢慢写
里面的用户登录 我写完了  会返回用户已保存的数据
你可以参考  我用nodejs写的API  (你可以看app.js我的跨域是没问题的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 13:46:56 | 显示全部楼层
yuesezhenmei 发表于 2020-5-10 13:01
有兴趣可以看看这个码云:https://gitee.com/wen_jun_zhang/agency_completion
自己写的项目  webpack搭建 ...

我看了一下,你的app.js  请问,你的前端跨域代码呢  在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 14:07:46 | 显示全部楼层
wp231957 发表于 2020-5-13 13:46
我看了一下,你的app.js  请问,你的前端跨域代码呢  在哪里

//设置跨域
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With,content-type, Authorization");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 14:10:44 | 显示全部楼层
wp231957 发表于 2020-5-13 13:46
我看了一下,你的app.js  请问,你的前端跨域代码呢  在哪里

我用vue-resource 和axios 请求 这样设置 都没跨域问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 14:37:25 | 显示全部楼层
yuesezhenmei 发表于 2020-5-13 14:07
//设置跨域
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", ...

这段代码 我懂,我的意思是 axios调用代码在哪里??
比如:类似
<script>
        var url = "http://api.zhuishushenqi.com/ranking/gender";

        var app = new Vue({
            el: "#w_1",
            data: {
                jokes: ["狠好看的笑话"]
            },
            methods: {
                getjoke: function(event) {
                    let that = this;
                    axios.get(url).then((response) => {
                        console.log(response);
                    }, (err) => {
                        console.log(err);
                    });
                    //event.target.value="再来一批"
                },
            }
        })
    </script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 15:32:33 | 显示全部楼层
wp231957 发表于 2020-5-13 14:37
这段代码 我懂,我的意思是 axios调用代码在哪里??
比如:类似

src/components/index.vue 里面的 mounted 我写了一个axios测试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 15:37:04 | 显示全部楼层
wp231957 发表于 2020-5-13 14:37
这段代码 我懂,我的意思是 axios调用代码在哪里??
比如:类似

写法不一样是我在src/main.js 注册axios 改了 使用方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 15:40:02 | 显示全部楼层
yuesezhenmei 发表于 2020-5-13 15:32
src/components/index.vue 里面的 mounted 我写了一个axios测试

你这个我猜测是 跨自己写的域  ??
我想跨的是外部url  比如 百度啊  淘宝啊  之类的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 00:43:15 | 显示全部楼层
wp231957 发表于 2020-5-13 15:40
你这个我猜测是 跨自己写的域  ??
我想跨的是外部url  比如 百度啊  淘宝啊  之类的

类似美团开放平台 饿了么开发平台上提供的open api 都是可以跨域的(就是让你用的
其他很少有服务器直接允许你的跨域 只能vue脚手架来设置了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-27 06:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表