【ajax】11.同源策略

〇、前情提要

在看b站视频 - 尚硅谷Web前端Ajax教程初学者零基础入门到精通全套完整版(ajax2020最新版),中插了这个知识记录一下。

参考:

  1. 我的笔记:
    【javaweb】b站-尚硅谷Web前端Ajax教程初学者零基础入门到精通全套完整版(ajax2020最新版) 笔记
    https://blog.csdn.net/weixin_43210113/article/details/110628389
  2. b站视频 - 尚硅谷Web前端Ajax教程初学者零基础入门到精通全套完整版(ajax2020最新版)
    https://www.bilibili.com/video/BV1WC4y1b78y?p=2
  3. 笔记视频链接
    链接:https://pan.baidu.com/s/1Wnwb42-AaqAlg6cQ0PRHwg
    提取码:3waj
  4. Node.js 中 __dirname 和 ./ 的区别
    https://blog.csdn.net/zsensei/article/details/79094714
  5. Mac下端口被占用的解决方式
    https://blog.csdn.net/yeguxin/article/details/77718368

一、同源策略

步骤一

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>首页</title>
</head>
<body>
    <h1>尚硅谷</h1>
</body>
</html>
server.js
const express = require('express');

const app = express();

app.get('/home', (request, response)=>{
    //响应一个页面
    response.sendFile(__dirname + '/index.html');
});

app.listen(9000, ()=>{
    console.log("服务已经启动...");
});

__dirname 知识补充:

参考:
Node.js 中 __dirname 和 ./ 的区别
https://blog.csdn.net/zsensei/article/details/79094714

Node.js 中,__dirname 总是指向被执行 js 文件的绝对路径,所以当你在 /d1/d2/myscript.js 文件中写了 __dirname, 它的值就是 /d1/d2 。

如果出现如下报错

events.js:xx
      throw er; // Unhandled 'error' event
      ^

在这里插入图片描述
请输入sudo lsof -i tcp:port,并kill PID
在这里插入图片描述

参考:
Mac下端口被占用的解决方式
https://blog.csdn.net/yeguxin/article/details/77718368

至此 服务成功启动
在这里插入图片描述

进入http://127.0.0.1:9000/home

在这里插入图片描述

步骤二

点击按钮给9000发请求,满足同源策略。

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>首页</title>
</head>
<body>
    <h1>尚硅谷</h1>
    <button>点击获取用户数据</button>
    <script>
        const btn = document.querySelector('button');

        btn.onclick = function(){
            const x = new XMLHttpRequest();
            //这里因为是满足同源策略的, 所以 url 可以简写
            x.open("GET",'/data');
            //发送
            x.send();
            //
            x.onreadystatechange = function(){
                if(x.readyState === 4){
                    if(x.status >= 200 && x.status < 300){
                        console.log(x.response);
                    }
                }
            }
        }
    </script>
</body>
</html>
server.js
const express = require('express');

const app = express();

app.get('/home', (request, response)=>{
    //响应一个页面
    response.sendFile(__dirname + '/index.html');
});

app.get('/data', (request, response)=>{
    response.send('用户数据');
});

app.listen(9000, ()=>{
    console.log("服务已经启动...");
});
进入http://127.0.0.1:9000/home

在这里插入图片描述
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值