精华内容
下载资源
问答
  • 前后端分离涉及问题,域名完全不同,浏览器不会携带cookie去访问,得改用token,并且访问时需要自己携带token,服务器会拒绝访问,所以会出现跨域问题,还需要配置后端允许跨域访问。每次访问都需要重新设置保存在...

    前后端分离涉及问题,域名完全不同,浏览器不会携带cookie去访问,得改用token,并且访问时需要自己携带token,服务器会拒绝访问,所以会出现跨域问题,还需要配置后端允许跨域访问。每次访问都需要重新设置保存在redis会话的有效时间
    Iframe访问其他网站,ie浏览器权限级别过高,配置后端降低ie权限级别访问

    展开全文
  • cookie跨域共享

    千次阅读 2019-07-20 23:30:20
    问题描述 需要解决前端pc跟服务端(java),跨域后都能获取到同一个cookie。 使用二级域名共享cookie有一个限制...服务器nginx增加以下配置,即可解决跨域访问的问题。也可以在程序中通过代码解决跨域访问。 nginx...

    问题描述

    需要解决前端pc跟服务端(java),跨域后都能获取到同一个cookie。
    使用二级域名共享cookie有一个限制条件,就是两个域名的二级域名必须相同

    前端pc访问域名:a.b.com
    后端接口域名:a-gateway.b.com
    这两个域名同属一个二级域名:b.com

    跨域访问

    服务器nginx增加以下配置,即可解决跨域访问的问题。也可以在程序中通过代码解决跨域访问。

    • nginx配置文件
    location / {
        #是否允许跨域发送Cookie
        add_header Access-Control-Allow-Credentials true;
        add_header Access-Control-Allow-Origin 'http://a.b.com';
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
    

    跨域携带发送cookie

    如果需要允许跨域携带发送cookie的话,nignx则需要以下参数配置

    • nginx配置
    1. “Access-Control-Allow-Credentials”:可选字段。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。
    2. 对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为’*’。这是因为请求的首部中携带了Cookie信息,如果 Access-Control-Allow-Origin 的值为’*’,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 http://a.b.com,则请求将成功执行。也就是说Access-Control-Allow-Credentials设置为true的情况下
      Access-Control-Allow-Origin不能设置为*。
    • 前端配置
      以vue请求为例:
    import axios from 'axios';
    axios.defaults.withCredentials=true //允许携带cookie
    
    • java设置cookie
    public static void  addCookie(HttpServletResponse response,String cookieName,String cookieValue,int maxAge){
        Cookie cookie  =new Cookie(cookieName,cookieValue);
        cookie.setDomain("b.com");//指定域名
        cookie.setPath("/");//设置cookie的生命周期
        cookie.setHttpOnly(false);
        if(maxAge>0){
            cookie.setMaxAge(maxAge);
        }
        response.addCookie(cookie);
    }
    
    展开全文
  • 就可以让其他域下的页面访问本域名下的接口,不配置的话请求会被阻止,虽然php后台已经接收并处理了请求,浏览器也已经接收到返回数据,但是chrome浏览器接收到返回数据后并不会传递给页面,而页面会收到请求失败的...

    前端vue,后端服务器nginx,后端应用php

    其实只要设置header("Access-Control-Allow-Origin:*");就可以让其他域下的页面访问本域名下的接口,不配置的话请求会被阻止,虽然php后台已经接收并处理了请求,浏览器也已经接收到返回数据,但是chrome浏览器接收到返回数据后并不会传递给页面,而页面会收到请求失败的返回,也就是跨域。导致页面不能正常接收跨域请求的返回。

    有的时候需要传cookie,而不是以参数的形式传递,不跨域的情况下cookie会自动携带,所以需要让后台接收前端传递的跨域cookie。不然还是会向上述一样,后台接收并处理了请求,浏览器接收到了请求,但是浏览器不会把返回数据传递给页面

    配置如下

    前端vue,使用的axios请求

    
          var url = this.url
    
          this.axios.post(url, 
            postData, 
            {
              // 单独配置,前端不配置这个的话,跨域会失败,需要后端协助支持
              withCredentials: true
            }
          ).then(res=>{
            console.log(res.data)
          }).catch(error=>{
            console.log(error)
          })

    或者在main.js中import axios后加入

    axios.defaults.withCredentials = true

    这样就不用给每个axios.post加参数了

     

    后端php,配置header

            header("Access-Control-Allow-Origin:http://a.example.com");
            header("Access-Control-Allow-Credentials:true");

    如此两者配合使用,可以是跨域的请求,携带当前域和跨域可访问的cookie

    a.example.com下的页面,访问b.example.com的接口,可以把cookie设置到.example.com的domain下,注意是点开始的,不要忘记了.点。这样b.example.com就允许了a.example.com的访问,并且支持cookie的携带和获取

     

    nginx中可以直接允许所有origin跨域

                add_header "Access-Control-Allow-Origin" $http_origin;
                add_header "Access-Control-Allow-Credentials" "true";

    但是这样可能会与代码中的header()造成冲突,

    展开全文
  • 跨域发送 cookie

    2020-07-29 15:25:52
    Web项目前后端分离开发时,经常会遇到跨域请求和跨域携带Cookie的相关问题: ...服务器nginx增加以下配置,即可解决跨域访问的问题。也可以在程序中通过代码解决跨域访问。 nginx配置文件 location / {

    Web项目前后端分离开发时,经常会遇到跨域请求和跨域携带Cookie的相关问题:

    需要解决前端pc跟服务端(java),跨域后都能获取到同一个cookie。
    使用二级域名共享cookie有一个限制条件,就是两个域名的二级域名必须相同

    前端pc访问域名:a.b.com
    后端接口域名:a-gateway.b.com
    这两个域名同属一个二级域名:b.com
    

    跨域访问

    服务器nginx增加以下配置,即可解决跨域访问的问题。也可以在程序中通过代码解决跨域访问。

    nginx配置文件

    location / {
        #是否允许跨域发送Cookie
        add_header Access-Control-Allow-Credentials true;
        add_header Access-Control-Allow-Origin 'http://a.b.com';
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
    

    跨域携带发送cookie

    如果需要允许跨域携带发送cookie的话,nignx则需要以下参数配置

    • nginx配置

    • “Access-Control-Allow-Credentials”:可选字段。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。

    • 对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为’’。这是因为请求的首部中携带了Cookie信息,如果 Access-Control-Allow-Origin 的值为’’,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 a.b.com,则请求将成功执行。也就是说Access-Control-Allow-Credentials设置为true的情况下
      Access-Control-Allow-Origin不能设置为*。

    • 前端配置
      以vue请求为例:

    import axios from 'axios';
    axios.defaults.withCredentials=true //允许携带cookie
    
    • java设置cookie
    public static void  addCookie(HttpServletResponse response,String cookieName,String cookieValue,int maxAge){
        Cookie cookie  =new Cookie(cookieName,cookieValue);
        cookie.setDomain("b.com");//指定域名
        cookie.setPath("/");//设置cookie的生命周期
        cookie.setHttpOnly(false);
        if(maxAge>0){
            cookie.setMaxAge(maxAge);
        }
        response.addCookie(cookie);
    }
    

    https://juejin.im/post/5d33349a5188254cbc32a5c8


    跨域请求

    服务端可以根据实际需求修改下面设置,以Java代码为做示例:

    //允许跨域的域名,*号为允许所有,存在被 DDoS攻击的可能。
    getResponse().setHeader("Access-Control-Allow-Origin","*");
    
    //表明服务器支持的所有头信息字段
    getResponse().setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma,Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
    
    /** 目前测试来看为了兼容所有请求方式,上面2个必须设 **/
    
    //如果需要把Cookie发到服务端,需要指定Access-Control-Allow-Credentials字段为true;
    getResponse().setHeader("Access-Control-Allow-Credentials", "true");
    
    // 首部字段 Access-Control-Allow-Methods 表明服务器允许客户端使用 POST, GET 和 OPTIONS 方法发起请求。
    //该字段与 HTTP/1.1 Allow: response header 类似,但仅限于在需要访问控制的场景中使用。
    getResponse().setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    
    //表明该响应的有效时间为 86400 秒,也就是 24 小时。在有效时间内,浏览器无须为同一请求再次发起预检请求。
    //请注意,浏览器自身维护了一个最大有效时间,如果该首部字段的值超过了最大有效时间,将不会生效。
    getResponse().setHeader("Access-Control-Max-Age", "86400");
    
    // IE8 引入XDomainRequest跨站数据获取功能,也就是说为了兼容IE
    getResponse().setHeader("XDomainRequestAllowed","1");
    
    

    跨域请求携带Cookie

    服务端可以根据实际需求修改下面设置,以Java代码为做示例:

    1. “Access-Control-Allow-Credentials”:可选字段。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。
    2. 对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为’’。这是因为请求的首部中携带了Cookie信息,如果 Access-Control-Allow-Origin 的值为’’,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 a.b.com,则请求将成功执行。也就是说Access-Control-Allow-Credentials设置为true的情况下
      Access-Control-Allow-Origin不能设置为*。
    //如果需要把Cookie发到服务端,需要指定Access-Control-Allow-Credentials字段为true;
    response.setHeader("Access-Control-Allow-Credentials", "true");
    
    //允许跨域的域名,*号为允许所有,存在被 DDoS攻击的可能。
    response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));
    
    //表明服务器支持的头信息字段
    response.setHeader("Access-Control-Allow-Headers","content-type");
    

    前端根据实际情况修改发起请求的ajax,示例:

    $.ajax({
        type: "POST",
        url: "实际的请求地址",
        data: {参数:参数值},
        dataType: "json",
        crossDomain:true, //设置跨域为true
        xhrFields: {
            withCredentials: true //默认情况下,标准的跨域请求是不会发送cookie的
        },
        success: function(data){
            alert("请求成功");      
        }
    });
    

    https://blog.csdn.net/u011267225/article/details/81511519

    展开全文
  • 1. 首先浏览器安全策略限制js ajax跨域访问服务器 2. 如果服务器返回的头部信息中有当前域: // 允许 http://localhost:8080 这个网站打开的页面中的js访问我 Access-Control-Allow-Origin: http://localhost:8080 /...
  •  通常情况下,A网页访问B服务器资源时,满足以下三个条件其一就是跨域访问 1. 协议不同 2. 端口不同 3. 主机不同 2、django解决跨域 安装django-cors-headers模块 在settings.py中配置 # 注册app ...
  • 首先浏览器安全策略限制js ajax跨域访问服务器 2.如果服务器返回的头部信息中有当前域:** // 允许 http://localhost:8080 这个网站打开的页面中的js访问我 Access-Control-Allow-Origin: http://localhost:8080 /...
  • 服务器端的web.xml里设置了 ``` xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" ...
  • 跨域对接方法总结

    2019-09-25 11:57:55
    Access-Control-Allow-Origin: '具体源' :允许通过跨域访问后台服务器的源。如果需要使用section来标示不同的会话,则需要前端设置允许cookie(因为浏览器是通过发送cookie中相关的ID ( JSESSIONID )来标识的),...
  • 使用CORS解决不同源前后端之间数据访问,和cookies-session共享(即允许前端在发送请求的时候带上本域名下的cookie访问另一个域名下的后端服务器,后端服务器允许指定域名发送cookie和接收cookie).要想实现前后端跨域,...
  • 一般在同一服务器配置多个项目时,浏览器发出请求时访问对应项目端口,这时浏览器会会通过发出的cookie默认值重置刷新是服务器中的 session重置出现登录失败原因,因为服务器通常的cookie值是默认设定为...
  • 1、新建filter类,配置请求头,以及允许访问的WEB服务器的域名/IP 地址和端口号 注意这里不能**不然cookie无效。 httpServletResponse.setHeader(“Access-Control-Allow-Origin”, “**”); package filter; import...
  • CORS,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名。最常见的设置是: res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-...
  • 打开另一个网页http://localhost:8088/index.html(Nginx服务器),在这个页面中发出ajax请求checkBook访问Web2服务器但是提示要登录,怎么样才能共享刚才的session?nginx配置如下: server { listen 8088...
  • 1.浏览器原因(360、火狐没问题,谷歌不行) 解决步骤如下: ...修改axios中的cookie配置(axios的请求配置默认是不携带cookie信息的) 1.在axios请求的参数中,设置对象属性withCredentials:true 后台配合
  • 前几天工作中和前端部门的同学配合时遇到一个问题:前端同学调用服务器端... 当时由于对ngix不太了解,只知道前端同学使用nginx做反向代理时,在测试环境配置的是ip+端口号的方式访问接口,于是就误以为是没有通过域...
  • Node 代理访问的实现

    2021-01-21 19:14:57
    本地开发,代理访问,防止跨域(一般通过webpack配置代理即可),特殊情况如携带一些自定义的登录cookie则需要通过自己写node 作为一种server中间层,单线程异步可以缓解服务器压力。长链接websocket通常使用node...
  • 是否使用cookie或授权标头之类的凭据发出跨站点访问 password {String} 默认空 用于访问有密码的PDF stopAtErrors {Boolean} 默认false 当无法成功解析关联的PDF数据时,停止解析 disableFontFace {Boolean} ...
  • 支持跨域访问 支持http客户端、服务器cookie 支持WebSocket服务器和客户端 支持http文件访问鉴权 GB28181与RTP推流 支持UDP/TCP国标RTP(PS或TS)推流服务器,可以转换成RTSP/RTMP/HLS等协议 支持RTSP/RTMP/HLS转...
  • 分布式Session框架

    2018-11-11 15:26:00
    分布式Session框架 配置服务器,Zookeeper集群管理服务器可以统一管理所有服务器配置文件 共享这些Session存储在一个分布式缓存中,可以随时写入...由于Cookie不能跨域访问,要实现Session同步,要同步Session...
  • NGINX缓存应用

    2018-12-01 12:59:14
    缓存类别: 客户端缓存(sqlit)、浏览器缓存(cookie)、CDN缓存、NGINX缓存、应用缓存... Nginx 解决跨域访问问题; Nginx 的防盗链配置。 NGINX缓存服务器的静态文件: 对客户已经访问过的内容在nginx服务器...
  • java之Servlet(七)

    2020-09-14 14:50:37
    学习路径 Tomcat 一个web服务器,也是装servlet的容器,要理解各个目录含义,学会使用 使用Servlet写出第一个程序 JavaWeb的标准目录结构,写一个...使用Cookie来显示用户上次访问的时间 使用Cookie来显示上次浏
  • 前后端分离(一)

    2015-11-17 19:08:00
    公司前端业务数据已经通过接口获取,但页面以及微信JS-SDK依然使用JSP方式。...二级域名index向二级域名api发送ajax请求时,涉及到跨域访问。需要后端配置响应Access-Control-Allow-Origin设置可信域...
  • 前面谈过session相关配置,在开发的时候,常需要跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间...
  • #服务器配置,配80能够省去地址后的端口号 server: port: 80 session-timeout: 3600 * 24 * 7 tomcat.max-threads: 0 tomcat.uri-encoding: UTF-8 前端html页面使用ajax调用,加了 ````cross...
  • ASP.NET.4揭秘 卷2

    2012-06-08 16:34:22
    n923 打开远程服务器上的配置文件 n924 使用Configuration类 n925 修改配置节 n926 准备创建新的网站 n93 创建自定义配置节 n94 创建加密的配置节 n941 使用aspnet_regiis工具加密配置节 n942 以编程方式加密配置节 ...
  • SSO-WebDemo

    2013-08-12 20:25:57
    如下图所示,当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来,在它访问页面2的时候会把这个cookie也带上,Web服务器接到请求时也...
  • 乐优商城.xmind

    2019-03-31 17:26:39
    如果服务器允许跨域,需要在返回的响应头中携带下面信息 Access-Control-Allow-Origin:可接受的域,是一个具体域名或者*,代表任意 Access-Control-Allow-Credentials:是否允许携带cookie,默认情况下,cors...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

服务器配置cookie跨域访问