H5跨域解决方式整理
以前工作中遇到过关于前端跨域访问问题,今天把解决方式总结整理一下。
1、jsonp(仅限GET请求,伪码):
String callback = request.getParameter("callback"); callback = checkCallback(callback);//防注入 //HttpServletResponse response response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.write(callback+"("+json+")"); //json就是业务json数据
其中checkCallback方法,是基于安全性考虑,防止前端提交一些脚本注入。
主要就是过滤掉callback中的script、javascript、<、> 等字符。
2、Cross-Origin Resource Sharing协议,需要浏览器支持:
response.setHeader("Access-Control-Allow-Origin", "https://xxx.xx.com"); response.setHeader("Access-Control-Allow-Credentials", "true");//允许发送cookie
服务器端的HttpServletResponse中设置一下就可以。
如果允许发送cookie,则Access-Control-Allow-Origin不能设置为 * 。
如果设置为 * ,则表示允许所有域名的脚本访问该资源,不过出于安全性,生产环境不要这样设置。
关于CORS协议详细介绍,可以参考这篇资料:http://www.ruanyifeng.com/blog/2016/04/cors.html
相关推荐
ajax跨域请求解决方案。有详细配置方案,轻松解决ajax请求数据是的跨域问题。
解决跨域发送请求,跨域请求资源的问题。
解决taro h5在调用接口时出现跨域的情况 修改config下的index.js
springboot做前后端分离,ajax跨域请求问题 前后端分离:即将后端服务层与前端展示层分别开发和部署,因而产生两个需要打包发布的项目, 将两个分别部署后,前端再去请求后端就会产生跨域请求的问题。 两种解决方案
服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置
基于jQuery的jsonp ajax跨域请求,
H5的video标签跨域.HTML的video标签跨域 我们都知道HTML video标签能播放视频 但是如果你的video要播放的是非当前域名下的视频文件,这就要跨域播放视频, 应该如何实现呢?
AJAX(XMLHttpRequest)进行跨域请求方法详解
前后端分离H5 跨域解决方案 提供多种解决方法 详情请下载文件 自己看 100%可以解决你的问题
微软模块框架abp的跨域请求配置Nuget包,配置跨域api请求规则。
JS跨域请求解决方案.docx
该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考
跨域请求jar包跨域请求jar包跨域请求jar包跨域请求jar包跨域请求jar包
cross-request 3.1 YApi 跨域请求 谷歌浏览器
ASP.NET WebApi跨域请求的配置引用dll文件,完美实现了跨域请求问题。
chrome插件【Allow CORS: Access-Control-Allow-Origin】
基于ajax方式的跨域请求jsonp的前后台代码
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
一个ajax跨域请求的demo实例,前端采用jquery的ajax,后端采用tomcat集成的HttpServlet的方法接受前端的数据和返回数据