什么是前端跨域,怎么解决跨域问题

什么是前端跨域,怎么解决跨域问题什么是跨域?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指:域名,协议,端口均相同,不明白没关系,举个栗子:http://www.123.com/index.html调用http://www.123.com/server.php(非跨域)http://www.123.com/index.html调用http://www.456.com/server.php(主域名不同:123/456,跨域)http://abc.1

大家好,又见面了,我是你们的朋友全栈君。

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指:域名,协议,端口均相同,不明白没关系,举个栗子:

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

解决办法:

1、JSONP:

使用方式就不赘述了,但是要注意JSONP只支持GET请求,不支持POST请求。

2、代理:

例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。【如java爬取网络数据用的httpClient请求】

3、PHP端修改header(XHR2方式)

在php接口脚本中加入以下两句即可:

header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问

header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

跨域会阻止什么操作?

浏览器是从两个方面去做这个同源策略的,一是针对接口的请求,二是针对Dom的查询

1.阻止接口请求比较好理解,比如用ajax从http://192.168.100.150:8020/实验/jsonp.html页面向http://192.168.100.150:8081/zhxZone/webmana/dict/jsonp发起请求,由于两个url端口不同,所以属于跨域,在console打印台会报No ‘Access-Control-Allow-Origin’ header is present on the requested resource

什么是前端跨域,怎么解决跨域问题

值得说的是虽然浏览器禁止用户对请求返回数据的显示和操作,但浏览器确实是去请求了,如果服务器没有做限制的话会返回数据的,在调试模式的network中可以看到返回状态为200,且可看到返回数据

https://blog.csdn.net/lianzhang861/article/details/84871369这篇博客有详细介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136327.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 日期时间控件[通俗易懂]

    日期时间控件[通俗易懂]日期时间控件开发软件使用到日期时间控件的地方很多,但是很多时候Html5自带的时间控件无法满足开发的需要,所以使用这种时间控件完全没有问题引用很多时候我们开发引用别人的控件时候,发现老是出现错误,是因为我们引用出现错误,我在使用日期时间控件的时候也出现了这样的问题所以文件一点要放正确,多的浪费,少了要命,请把以下标注的文件全部放入到引用的文件夹里面…

    2022年5月24日
    32
  • Windows Server 2012 DHCP 高可用性

    Windows Server 2012 DHCP 高可用性

    2022年3月12日
    97
  • python to exe transporter: py2exe Test report「建议收藏」

    python to exe transporter: py2exe Test report「建议收藏」pipinstallpy2exefromdistutils.coreimportsetupimportpy2exesetup(windows=[{“script”:”123.py”}])Thisreportisonlyusedtorecord.

    2022年9月11日
    0
  • pycharm如何创建新项目_Python3

    pycharm如何创建新项目_Python3步骤一:打开PyCharm步骤二:点击CreateNewProjectLocation:项目存储的目录【建议新建一个根目录,放置开发的所有项目,命名最好用英文(服务器仅仅识别英文)】步骤三:点击下方的小三角,配置解释器第一个选项是虚拟环境第二个选项是本地的【也就是我们所需要的】(图中已标出,第一次使用应为空值)步骤四:导入python.exe【注意:如果没有找到…

    2022年8月29日
    1
  • 硬阈值(Hard Thresholding)函数解读[通俗易懂]

    硬阈值(Hard Thresholding)函数解读[通俗易懂]题目:硬阈值(HardThresholding)函数解读1、硬阈值(HardThresholding)函数的符号    硬阈值(HardThresholding)并没有软阈值(SoftThresholding)那么常见,这可能是因为硬阈值解决的问题是非凸的原因吧。硬阈值与软阈值由同一篇文献提出,硬阈值公式参见文献【1】的式(11):     第一次邂逅硬阈值

    2022年6月12日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号