Java 存储cookie并将其发送到servlet
我正在通过servlet试验饼干。当我通过javascript向该servlet发出请求时,响应头具有Java 存储cookie并将其发送到servlet,java,javascript,rest,servlets,cookies,Java,Javascript,Rest,Servlets,Cookies,我正在通过servlet试验饼干。当我通过javascript向该servlet发出请求时,响应头具有设置cookie,但在向同一个servlet或同一域上的其他servlet发出后续请求时,请求头没有cookie头。我已经在下面粘贴了实验代码,请告诉我哪里出了问题 package com.java.servlet; import java.io.IOException; @SuppressWarnings("serial") public class ServletTest extends
设置cookie
,但在向同一个servlet或同一域上的其他servlet发出后续请求时,请求头没有cookie
头。我已经在下面粘贴了实验代码,请告诉我哪里出了问题
package com.java.servlet;
import java.io.IOException;
@SuppressWarnings("serial")
public class ServletTest extends HttpServlet {
public void init() throws ServletException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Create cookies for first and last names.
Cookie userId = new Cookie("userId",
request.getParameter("userId"));
// Set expiry date after 24 Hrs for both the cookies.
userId.setMaxAge(60 * 60 * 24);
// Add both the cookies in the response header.
response.addCookie(userId);
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "false");
response.addHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, Cookie");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS");
response.setContentType("application/json");
PrintWriter pw = response.getWriter();
List<String> ls = new ArrayList<String>();
ls.add("111");
ls.add("aaa");
pw.print(ls); //some random data
}
public void destroy() {
}
}
package com.java.servlet;
导入java.io.IOException;
@抑制警告(“串行”)
公共类ServletTest扩展了HttpServlet{
public void init()引发ServletException{
}
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
//为名字和姓氏创建cookie。
Cookie userId=新Cookie(“userId”,
getParameter(“userId”);
//为两个cookie设置24小时后的到期日期。
userId.setMaxAge(60*60*24);
//在响应头中添加这两个cookie。
addCookie(userId);
addHeader(“访问控制允许来源”,“*”);
addHeader(“访问控制允许凭据”,“false”);
addHeader(“访问控制允许标头”、“来源、内容类型、接受、Cookie”);
addHeader(“访问控制允许方法”、“获取、发布、删除、放置、选项”);
setContentType(“应用程序/json”);
PrintWriter pw=response.getWriter();
List ls=新的ArrayList();
ls.添加(“111”);
ls.添加(“aaa”);
打印(ls);//一些随机数据
}
公共空间销毁(){
}
}
我使用的javascript直接来自W3XmlHttpRequest。我把它贴在下面
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://192.168.1.10:8080/ServletTest/servlet", true);
xmlhttp.send();
}
</script>
</head>
<body>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>
</body>
</html>
函数loadXMLDoc(){
var-xmlhttp;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”http://192.168.1.10:8080/ServletTest/servlet“,对);
xmlhttp.send();
}
请求数据
我注意到cookie没有存储在这个servlet的浏览器cookie存储中。在这里帮助我在浏览器中直接输入servlet url时发送cookie。然而,通过javascript,它也不是caseSetting allow credentails to true dint help
response.addHeader(“访问控制允许凭据”,“true”)代码>