sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1793 随笔 :: 22 文章 :: 24 评论 :: 225万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

七、设置请求头信息 jquery发送ajax请求和后端一起使用

1、预定义请求头设置:

在xhr.open()方法之后添加语句,进行请求头设置

            //设置请求头
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

请求报文分为:行、头、空行、体

其中Content-Type用以设置请求体内容类型;

后面的长串字符串是用来设置请求体内容类型的固定写法

在开发者工具中查看:

2、自定义请求头设置:

设置自定义的请求头

xhr.setRequestHeader('name','value');

F5运行,并打开开发者工具窗口;此时会报红,并且原有div没有展示服务端的响应体内容;这是因为自定义的请求头会触发浏览器的安全机制

 若是需要正常发送和接受,需要在服务端定义特殊的响应头

 设置响应头,能够接受所有类型的头信息

response.setHeader("Access-Control-Allow-Headers","*");

由于在真正的运行阶段,前端页面发送请求头信息之后,还需要验证自定义的请求头是否可用,会用到Options请求方法,因此需要将请求方法设置为all

app.all('/server',(request,response) =>{
    //设置响应头   设置允许跨域
    response.setHeader("Access-Control-Allow-Origin","*");
    //设置响应头    * 表示允许接受所有类型的头信息
    response.setHeader("Access-Control-Allow-Headers","*");
    //设置响应体
    response.send("Hello Ajax-Post请求");
})

关闭server.js的运行,并重新启动,打开前端页面文件并F5运行,鼠标悬浮div上,打开开发者工具,如下,即完成自定义请求头的创建

所有代码:

前端代码

<!--Post请求  前端浏览器页面-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ajax Post 请求</title>
    <style>
        #result{
            width: 200px;
            height: 100px;
            border: solid 1px #903;
        }
    </style>
</head>
<body>
    <!--鼠标悬浮于div上,向服务端发送请求,并将响应体显示到div中-->
    <div id = "result"></div>
    <script>
        //获取元素对象
        const result = document.getElementById('result');
        //绑定鼠标悬浮事件
        result.addEventListener('mouseover',function(){
            //1、创建对象
            const xhr = new XMLHttpRequest();
            //2、初始化 设置请求类型和url
            xhr.open("Post","http://127.0.0.1:8000/server");
            //设置请求头
            //Content-Type用来设置请求体内容类型
            //后面长串用来设置请求体内容类型的固定写法
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            //自定义请求头设置
            xhr.setRequestHeader('name','study');
 
            //3.发送   设置请求体
            xhr.send("a=100&b=200&c=300");
            //4.事件绑定
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status >= 200 && xhr.status < 300){
                        result.innerHTML=xhr.response;
                    }
                }
            }
        });
    </script>
</body>
</html>

服务端代码

//1.引入express
const express = require('express')
 
//2.创建引用对象
const app = express();
 
//3.创建路由规则
//request  是对请求报文封装
//response 是对响应报文的封装
//此处的'/server'代表若是连接server,则会进行对应的设置
app.get('/server',(request,response) =>
{
    //设置响应头  设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    //设置响应体
    response.send("Hello Ajax");
});
app.all('/server',(request,response) =>{
    //设置响应头   设置允许跨域
    response.setHeader("Access-Control-Allow-Origin","*");
    //设置响应头    * 表示允许接受所有类型的头信息
    response.setHeader("Access-Control-Allow-Headers","*");
    //设置响应体
    response.send("Hello Ajax-Post请求");
})
 
//4.监听端口启动服务
app.listen(8000,()=>{
    console.log("服务器已经启动,8000端口监听中......");
});

个人学习记录,欢迎指点讨论

原文链接:https://blog.csdn.net/qq_43733614/article/details/131623157
posted on   sunny123456  阅读(400)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2019-11-06 CMD下常用文件操作指令
2019-11-06 C#中int、long、float、double、decimal最大值最小值
点击右上角即可分享
微信分享提示