
正文
js如何设置header请求信息 js head
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
jquery怎么在header中设置请求信息
jquery是js的类库,js本身不能操作header,因为js是在浏览器加载页面过程中才开始执行的 header需要服务器端执行操作 如果是ajax,是可以设置header $.ajax({ url: "", data: {}, type: "GET", beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},//这里设置header success: function() {} })
也就是setRequestHeader函数
相关问答
Q1: java中如何设置HTTP协议的头信息(header)
首先,我们先看一下http的头信息到底是什么:
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null;
HttpGet get = new HttpGet(url);
get.addHeader("Accept", "text/html");
get.addHeader("Accept-Charset", "utf-8");
get.addHeader("Accept-Encoding", "gzip");
get.addHeader("Accept-Language", "en-US,en");
get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
response = client.execute(get);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
if (header != null)
{
HeaderElement[] codecs = header.getElements();
for (int i = 0; i codecs.length; i++)
{
if (codecs[i].getName().equalsIgnoreCase("gzip"))
{
response.setEntity(new GzipDecompressingEntity(entity));
}
}
}
return response;
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(2);
HttpHost googleResearch = new HttpHost("research.google.com", 80);
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);
DefaultHttpClient client = new DefaultHttpClient(cm);
Q2: 如何设置请求的Header
类似这样
httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpGet.setHeader("Accept-Encoding", "gzip, deflate");
httpGet.setHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
httpGet.setHeader("Cookie", httpCookie.getCookie(Site.me().getDomain()));
httpGet.setHeader("Referer", "");
httpGet.setHeader("Host", "");
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0");
httpGet.setHeader("Connection", "keep-alive");
Q3: ajax跨域请求处理及header自定义设置
最近做了一个应用管理系统,采用前后端分离方式开发,前端使用了layuiadmin框架,后端使用了 .net web api,在开发过程中,遇到了ajax跨域问题及header自定义设置,这是所有前后端分离开发都需要解决的问题,在此做一个记录。
在前端ajax请求时,我们在header中设置了自定义的头部信息,将token写入了头部,便于后端进行身份认证, 如:xhr.setRequestHeader("Authorization", access_token)。通过了ajax全局方法做了统一处理。
在设置了自定义header后,浏览器到后端请求将分为两步进行。
浏览器将先发送一个预请求OPTIONS到后端,这里后端需要对OPTIONS请求做出正确响应,可以直接返回200状态码,不用返回内容信息。
浏览器接收到OPTIONS正确响应后会自动执行发送get或post请求。可此时依旧没有请求到后端数据,F12查看控制台输出,会发现报错了。这就是接下来要处理的跨域问题。
跨域的处理主要是服务器端设置响应头,针对.net web api 可直接在web.config文件中的system.webServer节点中进行设置,如图:
Access-Control-Allow-Origin; //支持全域名访问,不安全,部署后需要固定限制为客户端网址
Access-Control-Allow-Methods; //支持的http 动作
Access-Control-Allow-Headers; //响应头 请按照自己需求添加
设置完成后,前端在chrome下调用api接口能正常相应,但在IE下依旧报错,如图:
最终发现,我们自定义设置了Authorization,在IE下,后端并没有给出相应的响应,原以为Access-Control-Allow-Headers设置为*,就能表示所有的响应头,但在IE下不行,需要将自己对应的需求以此设置。如图
设置完后,就可成功访问后端api。
Q4: js如何设置http头部
js只能设置XMLHttpRequest的请求头,http的请求头js是无法设置的,因为js开始起作用的时候http请求已经完成了。
关于js如何设置header请求信息和js head的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






