鱼C论坛

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

跨域问题

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

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

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

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

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

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

  10. </head>

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

  20.         var app = new Vue({
  21.             el: "#w_1",
  22.             data: {
  23.                 jokes: ["狠好看的笑话"]
  24.             },
  25.             methods: {
  26.                 getjoke: function(event) {
  27.                     let that = this;
  28.                     axios.get(url).then((response) => {
  29.                         console.log(response);
  30.                     }, (err) => {
  31.                         console.log(err);
  32.                     });
  33.                     //event.target.value="再来一批"
  34.                 },
  35.             }
  36.         })
  37.     </script>
  38. </body>

  39. </html>
复制代码


后台:NODE +EXPRESS
  1. var express = require('express');
  2. var http = require('http');
  3. var fs = require('fs');
  4. var app = express();
  5. var path = require('path');

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

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

  13. app.get('/', function(req, res, next) {
  14.     res.writeHead(200, { 'Content-Type': 'text/html' })
  15.     fs.readFile('./xiaoshuo.html', 'utf-8', function(err, data) {
  16.         if (err) {
  17.             throw err;
  18.         }
  19.         res.end(data);
  20.     });
  21. });

  22. app.listen(3000);
  23. console.log("监听端口 3000");
  24. //console.log(app);
复制代码


测试环境:chrome

几张相关图片:


补充, var url = "http://api.zhuishushenqi.com/ranking/gender"; 这个我单独在浏览器(CHROME)运行是能拿到数据
1.png
2.png
3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

我用vue-resource 和axios 请求 这样设置 都没跨域问题
小甲鱼最新课程 -> https://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>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

src/components/index.vue 里面的 mounted 我写了一个axios测试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

写法不一样是我在src/main.js 注册axios 改了 使用方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你这个我猜测是 跨自己写的域  ??
我想跨的是外部url  比如 百度啊  淘宝啊  之类的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

类似美团开放平台 饿了么开发平台上提供的open api 都是可以跨域的(就是让你用的
其他很少有服务器直接允许你的跨域 只能vue脚手架来设置了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 09:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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