博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax跨域访问解决方案
阅读量:4696 次
发布时间:2019-06-09

本文共 987 字,大约阅读时间需要 3 分钟。

No 'Access-Control-Allow-Origin' header is present on the requested resource.

当使用ajax访问远程服务器时,请求失败,浏览器报如上错误。这是出于安全的考虑,默认禁止跨域访问导致的。

一、什么是跨域访问

举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的。跨域访问违反了同源策略,同源策略的详细信息可以点击如下链接:; 

总而言之,同源策略规定,浏览器的ajax只能访问跟它的HTML页面同源(相同域名或IP)的资源。

二、解决方案

常用的解决方案有两种,可以分为客户端解决方案和服务器端解决方案。先说服务器端解决方案:

  • 服务器端解决方案 

    在服务器端的filter或者servlet里面添加 
    response.setHeader("Access-Control-Allow-Origin", "*"); 
    “Access-Control-Allow-Origin”表示允许跨域访问,“*”表示允许所有来源进行跨域访问,这里也可以替换为特定的域名或ip。 
    很显然,这种方式对非网站拥有人员来说是不能做到的。而且此种方式很容易受到CSRF攻击。

  • 客户端解决方案

$(function($){      var url = 'http://*****/index'; $.ajax(url, { data: { 'cityname': '成都', 'date': '2016.12.12' }, dataType: 'jsonp', crossDomain: true, success: function(data) { if(data && data.resultcode == '200'){ console.log(data.result.today); } } });

将ajax请求中的dataType属性设置为“jsonp”,jsonp是专门用来解决跨域访问而诞生的。

从服务器端和前端两个角度更加详细的讲解以及完整实例请参看博客:

转载于:https://www.cnblogs.com/ziyoublog/p/9088948.html

你可能感兴趣的文章
GDC China 2011见闻与感悟
查看>>
[工作笔记]JDK版本不同导致的SSL异常
查看>>
java.sql.DataTruncation: Data truncation
查看>>
给dubbo接口添加白名单——dubbo Filter的使用
查看>>
linux怎样使用top命令查看系统状态
查看>>
C# DataTable.Select()方法,条件中使用类型转换
查看>>
java 装饰者类
查看>>
使用C#开发基于XSLT的代码生成器
查看>>
CLR线程池的工作者线程
查看>>
多线程中UIAlertView无法消失的问题
查看>>
js创建对象的几种方式
查看>>
MRC和ARC混合开发
查看>>
手机应用开发的最强代表 就应用在下面这款手机上
查看>>
228.链表的中点
查看>>
约瑟夫环简介,问题以及java实现
查看>>
java课堂笔记
查看>>
java字符串与基础混淆
查看>>
Python中的输入和输出
查看>>
Python爬虫系列-BeautifulSoup详解
查看>>
定义了重复的system.web.extensions/scripting/scriptResourceHandler怎么办
查看>>