源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript跨域原因以及解决方案分享

  • 时间:2021-04-02 14:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript跨域原因以及解决方案分享
[b]产生跨域问题的原因[/b] 跨域问题是浏览器同源策略限制,当前域名的js只能读取同域下的窗口属性。 [b]跨域问题产生的场景[/b] 当要在在页面中使用js获取其他网站的数据时,就会产生跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时以及hybrid app中请求数据,浏览器就会提示以下错误。这种场景下就要解决js的跨域问题。 XMLHttpRequest cannot load http://你请求的域名. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://当前页的域名' is therefore not allowed access. [b]哪些情况会产生跨域问题[/b] 一个网站的网址组成包括协议名,子域名,主域名,端口号。比如 [url=https://github.com/]https://github.com/[/url] ,其中https是协议名,www是子域名,github是主域名,端口号是80,当在在页面中从一个url请求数据时,如果这个url的协议名、子域名、主域名、端口号任意一个有一个不同,就会产生跨域问题。 即使是在 [url=http://localhost:80/]http://localhost:80/[/url] 页面请求 [url=http://127.0.0.1:80/]http://127.0.0.1:80/[/url] 也会有跨域问题 [b]解决跨域问题[/b] 解决跨域问题有以下一种方式 使用jsonp 服务端代理 服务端设置Request Header头中Access-Control-Allow-Origin为指定可获取数据的域名 [b]jsonp的解决方式[/b] [b]json≠jsonp[/b] [b]原理[/b] jsonp解决跨域问题的原理是,浏览器的script标签是不受同源策略限制(你可以在你的网页中设置script的src属性问cdn服务器中静态文件的路径)。那么就可以使用script标签从服务器获取数据,请求时添加一个参数为callbakc=?,?号时你要执行的回调方法。 [b]前端实现[/b] 以jQuery2.1.3的ajax方法为例
[url=http://www.zhihu.com/question/22992229]http://www.zhihu.com/question/22992229[/url] [b]浏览器支持[/b] Access-Control-Allow-Origin是html5新增的一项标准,IE10以下是不支持的,所以如果产品面向的是PC端,就要使用服务端代理或jsonp。 以上所述就是本文的全部内容了,希望能够对大家学习javascript跨域有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部