首页 > 编程知识 正文

教师面试问题(iframe跨域问题)

时间:2023-05-05 19:46:57 阅读:99130 作者:2822

问题:什么是JS的同源策略和跨域问题?

请求跨域问题真的不是不同浏览器造成的!

对应策略:

所谓同源策略,是指浏览器对不同来源的脚本或文本的访问方式所施加的限制。例如,源A的js不能读取或设置引入的源b的元素属性。

意思是两个相同来源的页面有相同的协议,主机(也经常叫域名)、端口、三要素缺一不可。

受同源策略限制的不同源之间的交互主要针对js中的XMLHttpRequest等请求。以下情况完全独立于相应的策略。

1.页面中的链接、重定向和表单提交将不受相应策略的限制。

2.允许跨域资源嵌入。当然,浏览器会限制Javascript读写加载的内容。

跨域问题:

意味着我们需要向不同来源的后台接口发送http请求来请求数据。

vue-cli开发环境的开发肯定会涉及到跨领域的问题。

因为vue-cli开发环境启动了端口号为localhost:的本地节点服务器,所以此时请求数据的接口必须是跨域的。

00-1010 1.在vue-cli项目中,使用node.js代理服务器实现跨域请求。

2.当服务器响应客户端时,带来访问控制允许源: *头信息[推荐]

3.通过jquery的jsonp形式解决跨域问题。

详细说明:

1.在vue-cli项目的config文件夹下的index.js配置文件中,配置dev对象的proxyTable对象,通过node.js的代理服务器可以实现跨域请求

dev: {

env:要求('。/dev.env '),

端口: 8080,

autoOpenBrowser:真,

assets子目录: '静态',

assetpublicath : '/',

proxyTable: { },

cssSourceMap: false

}

但是这种解决方案只适用于解决vue-cli开发环境中的跨域问题,如果生产环境中涉及跨域问题,还没有解决。

2.以java代码为例设置http请求的响应头。建议使用:

公共类testFilter实现了Filter {

公共void doFilter(ServletRequest请求、ServletResponse响应、FilterChain链)

引发IOException,ServletException {

httpersvletresponse=(httpersvletresponse)resp;

response . setheader(' Access-Control-Allow-Origin ',' * ');//解决跨域访问错误

response.setHeader('访问控制-允许-方法',' POST,PUT,GET,OPTIONS,DELETE ');

response.setHeader('访问控制-最大年龄',' 3600 ');//设置到期时间

response.setHeader('访问控制-允许-头','来源,X-请求-与,内容-类型,接受,客户端_id,uuid,授权');

response . setheader(' Cache-Control ','无缓存,无存储,必须重新验证');//支持HTTP 1.1。

response.setHeader('Pragma ','无缓存');//支持HTTP 1 . 0 . response . setheader(' expires ',' 0 ');

chain.doFilter(req,RES);

}

3.jQuery跨域设置ajax请求:

$.Ajax({ 0

“网址:”./data.js ',//可能不是本地域名。

键入:'get ',

DataType:'jsonp ',//jsonp格式访问

jsoncallback : ' aa '//函数获取数据

})

案例:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。