首页 > 其他分享 >浏览器跨域问题与解法

浏览器跨域问题与解法

时间:2023-06-15 10:47:27浏览次数:30  
标签:Control 浏览器 跨域 Access header add Allow 解法

  • 问题引入:什么是跨域

请求违反了同源策略(协议、域名、端口有一个不同),就是跨域。

在浏览器访问网站时 协议域名端口 都是确定的。如果目标资源中的协议域名端口有一个不同,就会产生跨域问题(浏览器会拦截该资源)。

  • 问题解决:CORS 方案

CORS 方案是一种服务器端解决跨域问题的方式,其核心思想是在响应头中设置 Access-Control-Allow-* 相关的头部。使用 Nginx 解决跨域问题时,增加配置:

location /api {
    set $cors_origin "";
    if ($http_origin ~* "^https://(a|b).example.com$") {
        set $cors_origin $http_origin;
    }
    add_header 'Access-Control-Allow-Origin' '$cors_origin';
    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';
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '$cors_origin';
        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';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
    }
}

这段代码中,/api 表示要解决跨域问题的接口地址,add_header 用于添加 Access-Control-Allow-* 相关的头部,其中 Access-Control-Allow-Origin 字段中,值为 * 表示允许所有来源的跨域请求,$cors_origin 表示允许匹配域名的跨域请求。

  • 响应头中设置 Access-Control-Allow-* 相关的头部 的作用

HTTP 响应头中的 Access-Control-Allow-* 相关的头部用于在 CORS(Cross-Origin Resource Sharing,跨域资源共享)机制中向浏览器返回响应,告诉浏览器当前请求是一个跨域请求,并且服务器愿意接收来自其他域的请求。

标签:Control,浏览器,跨域,Access,header,add,Allow,解法
From: https://www.cnblogs.com/dewan/p/17482235.html

相关文章

  • 浏览器输入URL到网页完全呈现的过程
    前言临近计算机网络期末考试,最近在复习(预习),写一遍博客讲解加深印象.浏览器输入URL过程图浏览器输入URL过程:当用户在网页上输入网址URL后,浏览器会对网址进行DNS域名解析获得对应的ip地址.之后,浏览器客户端向服务器尝试建立连接,进行TCP三次握手.......
  • textBox禁用浏览器自动填充
    https://blog.csdn.net/jijunwu/article/details/20540769asp.Net设置 AutoCompleteType  属性 AutoCompleteType="Disabled"后台代码添加属性  textBoxId.Attributes.Add("autocomplete","off");......
  • 转:Vue项目解决跨域
    Vue项目解决跨域  使用vue配置代理服务器解决跨域连接 Vue·修改启动端口   ......
  • 通过Canvas在浏览器中更酷的展示视频
    有了Canvas可以更灵活的展示体验更好的视频,能够与页面更好的融合。文/MatthewMcClure译/Johnhttps://mux.com/blog/canvas-adding-filters-and-more-to-video-using-just-a-browser/视频无疑是网页中最引人关注的元素之一。在一个兼容性良好的网页内,视频的动态画面让网页内容......
  • 浏览器渲染原理
    浏览器是如何渲染页面的?当浏览器的网络线程收到HTML文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。整个渲染流程分为多个阶段,分别是:HTML解析、样式计算、布局、分层、绘制、光栅化、画,每个阶......
  • EasyCVR移动端火狐浏览器中云台显示问题的优化
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台能对前端接入设备进行统一集中管理,支持采用设备树对设备进行分组、分级管理,支持设备状态监测、云端运维等功能,实现对接入资源的集中控制与权限分配。有用户反馈,在移动端使用火狐浏览器,发现EasyCV......
  • beego 跨域
    网上资料大部分跨域设置引入插件github.com/astaxie/beego/plugins/cors//允许跨域 beego.InsertFilter("*",beego.BeforeRouter,cors.Allow(&cors.Options{ AllowAllOrigins:true, AllowMethods:[]string{"GET","POST","PUT",&......
  • Edge浏览器的JSON格式化插件(FeHelper)不生效
    问题有时候懒得打开ApiPost测试接口,就直接使用Edge浏览器进行接口测试,但是最近格式化出了问题,FeHelper插件的JSON格式化不生效,不对,也不能说是完全不生效吧,测试非本地的接口倒是可以本地接口(奇怪的格式化,好丑......
  • 浏览器缓存内幕与getLastModified方法
    源:评:[问题描述:] 1)userlogout之后,按回退按钮又可进行提交; IE缓存的问题。 登出系统之后,输入刚才的URL,依然能访问原来的页面(但是有任何操作就会返回到登陆的页面),这是IE缓存的问题,只要清除调IE的缓存就好。   清除IE缓存的方法有两种,一是在浏览器端控制,二是在服务器端返回Re......
  • vue调用百度api时,跨域问题解决方案
    最近在调用百度地图,文字转语音接口的时候,用vue,js来前端实现转换,及时语音播报,遇到点问题;1.之前直接不用accessToken,一个连接拼接抓取的,已经失效了。2.查看百度文档,更新后的接口,按照文档nodejs格式,一直都是报跨域问题,单独在headers中加'Access-Control-Allow-Origin':'*'无效。......