ajax 跨域无法携带cookie 解决办法

ajax 跨域无法携带cookie,需要用到session,终于完美结局

xhrFields: {

withCredentials: true

},

添加这个可能是大家都会做的一件事

但是添加上了之后就出现了另外一个问题

The ‘Access-Control-Allow-Origin‘ header contains the invalid value ‘Origin‘. Origin 。。。。。。

  2、服务器server端要配置Access-Control-Allow-Credentials

  我们在客户端设置了withCredentials=true 参数,对应着,服务器端要通过在响应 header 中设置Access-Control-Allow-Credentials = true来运行客户端携带证书式的访问。通过对Credentials参数的设置,就可以保持跨域Ajax时传递的Cookie。

response.setHeader("Access-Control-Allow-Credentials", "true");

  3、服务器server端要配置Access-Control-Allow-Origin

  到以上配置为止,发送ajax请求,我们发现还会出现一个错误,提示我们 Access-Control-Allow-Origin 不能用 * 通配符。原因是:当服务器端 Access-Control-Allow-Credentials = true时,参数Access-Control-Allow-Origin 的值不能为 ‘*‘ 。

  我们重新设置Access-Control-Allow-Origin的值,当服务器端接收到请求后,在返回响应时,把请求的域Origin填写到响应的Header信息里(即谁访问我,我允许谁),代码如下:

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

添加了这个就可以了

时间: 2024-10-08 05:36:26

ajax 跨域无法携带cookie 解决办法的相关文章

Ajax跨域请求以及乱码解决

Ajax跨域请求2种解决方法 1 ) 什么叫跨域请求,协议,域名,端口号,其中一样不同都称跨域; 第一种:使用script标签发送请求; //创建一个script标签; var v_element=document.createElement("script"); //设置script的type 属性; v_element.type="text/javascript"; //设置src属性; v_element.src="http://127.0.0.1:

ajax跨域调试和cookie问题

在之前项目中,web前端ajax的跨域访问api接口都是通过设置Data-type="jsonp"来解决的. 新项目中为了安全起见,把用户敏感信息和api接口验证都放在HttpRequest Header的Authorization中, 但是发现一个蛋疼的问题,使用Data-type="jsonp"来进行跨域访问,Header中Authorization的内容无法发送出去. 为了解决这个问题只能使用Data-type="json",并在本地用ng

跨域问题及一些解决办法

一. 什么叫跨域?    不符合同源策略的,    (1)jd.com 请求不到baidu.com下的接口    (2)m.taobao.com 请求不到  www.taobao.com下接口    (3)www.baidu.com   请求不到www.baidu.com:8888  下接口    (4)http://www.baidu.com 请求不到  https://www.baidu.com 下的接口 同源策略:    (1)协议相同     (2)端口号相同   (3)域名相同 (一级

ajax跨域请求带cookie

调用网站:a.xxx.com jQuery(document).ready(function () { $.ajax({ type: "get", async: true, url: "http://www.xxx.com/common/Index", //跨域请求的URL dataType: "html", xhrFields: { withCredentials: true }, crossDomain: true, success: fun

【ajax跨域】原因原理解决

1.安全,跨域cookie iframe 2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的.当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如: <script src="http://www.example.net/api?param1=1&param2=2"></script> 并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)

解决AJAX跨域问题

就目前所知,form表单和jsonp貌似都不存在跨域问题,具体原理有待进一步研究. 试验过,得知AJAX跨域不了. 解决办法1:设置header头 const http = require('http'); let allowOrigin={ //允许进行ajax跨域请求的地址 'http://localhost':true, 'http://aaaaaaaaaaaaaaa.com':true, } http.createServer( (req,res)=>{ let {origin} = r

CXF发布支持ajax跨域访问的restful webservice

用apache cxf构建了一个玩具型restful webservice,内嵌jetty,加上gradle,发布无比轻松. apply plugin: 'java' apply plugin: 'application' repositories { maven { url "http://maven.oschina.net/content/groups/public" } } [compileJava,compileTestJava,javadoc]*.options*.encod

AJAX跨域的解决办法? 同步异步

1. HTTP协议的状态消息都有哪些? 1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请求失败   2. AJAX跨域的解决办法?   1.document.domain+iframe的设置 对于主域相同而子域不同的例子,可以通过设置document.domain的办法来解决. 具体的做法是可以在http://www.a.com/a.html和http://script.a.com/b

AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?

ajax是异步的 JavaScript 和 XML.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 交互流程: 1--启动  获取XMlHttpRequest对象             2--open 打开url通道,并设置异步传输              3--send 发送数据到服务器             4--服务器接受数据并处理,处理完成后返回结果              5--客户端接收