Below Issue only happens while trying to access some resources which are existing in a different origin

  • Issue Description
    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8089/webapp/jsp/login. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

  • Operations caused the issue
    Using ajax to access some other web source,like below:

<a onclick="valueAjax()">item2</a>
function valueAjax(){
  $.get("http://www.baidu.com",function (data){
             document.getElementById('a').innerHTML = data;
  }).fail(function(data) {
    alert( data);
  });
}
  • Reason analysis
    The resource which is accessing does not exist in the same origin with the requester.

  • How to resolve

    1. Simulation Environment:
      Web Server: tomcat
      Web page: jsp,html
      Script: Jquery
      a. Create html ‘page1.html’
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>

<body>
<div style="position: absolute; top:10px; left: 10px; border: solid 1px red; width: 100px; height: 100px" id="left">
   <button onclick="changeValue(this.innerHTML)">item1</button>
   <a onclick="valueAjax()">item2</a>
</div>
<div style="position: absolute; top:10px; left: 120px; border: solid 1px red; width: 100px; height: 100px" id="right">
   <span id="a">asf</span>
   <span>item2</span>
</div>

<script> function changeValue(val){ alert(val); document.getElementById('a').innerHTML = val; } function valueAjax(){ $.get("http://localhost:8089/webapp/jsp/login",function (data){ document.getElementById('a').innerHTML = data; }).fail(function(data) { alert( data); }); } </script>

</body>
</html>
  • Create Web project ‘webapp’,configure below filter in web.xml
<filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • Result
    Initial page -

    Succeed from ajax -

Additional kNowledge
- Same-origin Policy
An origin is defined as a combination of URI scheme,hostname,and port number. If all the three parts are the same,we can say the two resources are in the same origin.
Why use it is for security concern.

Quotation
1. http://enable-cors.org/server_tomcat.html
2. http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter
3. https://en.wikipedia.org/wiki/Same-origin_policy

Ajax - CORS - Cross Origin Resource Sharing的更多相关文章

  1. HTML5 3D书本翻页动画的实现示例

    这是一款十分炫酷的HTML5 3D书本翻页动画,效果相对比较简单,拖拽鼠标模拟用手翻页,需要的朋友们下面随着小编来一起学习学习吧

  2. 使用postMessage让 iframe自适应高度的方法示例

    这篇文章主要介绍了使用postMessage让 iframe自适应高度的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. ios – UIPopoverController出现在错误的位置

    所以我花了一些时间寻找答案,但到目前为止还没有找到任何答案.我正在尝试从UIInputAccessoryView上的按钮呈现弹出窗口.UIBarButtonItem我想显示popover来自定制视图,所以我可以使用图像.我创建这样的按钮:当需要显示popover时,我这样做:但我得到的是:弹出窗口看起来很好,但它应该出现在第一个按钮上时出现在第二个按钮上.然后我发现了这个问题:UIBarButto

  4. ios – 无法在UITableViewCell的drawRect中绘制

    我在使用自定义UITableViewCell的drawRect方法时遇到了麻烦.这是我正在使用的代码我已经调试过以确保所有数值都有意义,看起来它们确实存在.无法真正找出屏幕上没有任何内容的原因.值得一提的是,这也是一个在笔尖中定义的单元格.我正在使用iOS7sdk构建.有任何想法吗?tahnks解决方法你可能不应该在UITableViewCell自己的drawRect中这样做.而是创建一个自定义UIView并将其添加为子视图.另见thisanswer.

  5. UITableView在iOS 7中,在单元格中编辑UITextView时,不滚动到正确的位置

    我有一个静态单元的表视图.一个单元格包含一个UITextView,并且heightForRowAtIndexPath:是动态计算的,因此单元格总是足够高以容纳文本(该部分在iOS7下实现了一些工作,实际上,因为不可能简单地询问textView的contentSize).当我在文本视图中点击开始编辑时,键盘动画到位,tableView上的contentInsets会自动调整,以解决这个问题(即iPh

  6. ios – 找不到金属’质地’

    随着每个基于Metal的ImageView的实现,我都面临同样的问题Valueoftype‘MTLDrawable’hasnomember‘texture’好像苹果改变了一些金属api这是我试用的全部功能:解决方法执行系统和xcode更新后,我遇到了同样的问题.在更新过程中,xcode将构建目标切换到模拟器.一旦我将目标切换回设备,它就会再次编译.

  7. ios – 计算UITextField基线位置

    我试图通过编程方式将UITextField的实例的基线与UIButton的实例对齐.我正在处理这个计算类似于here描述的方式,但是使用UITextField可以有一个偏移的内容.任何想法如何获得UITextField中的文本位置甚至更好,是否有一个更简单的方法来对齐基线?解决方法在我的经验中,与UIButton不同,UITextField在文本周围实际上并没有任何偏移.无论如何,您可以在两个控件中找出确切的文本框:

  8. ios – UISearchController不重新显示旋转导航栏

    我已经实施了UISearchController,除了…解决方法看起来UISearchController忘记在状态栏重新出现时重新设置searchBar的框架.我认为这可能是UISearchController中的一个错误;似乎有一些列在radar.似乎searchBar的超级视图最终以错误的高度.这是令人烦恼的,因为解决方案因此涉及到SearchController的视图层次结构,哪个苹果可以改变…

  9. 键盘隐藏了IOS中的文本字段

    90个我在IOS中使用带有一些文本字段的scrollview创建了一个表单.视图看起来像这样,当我开始编辑州或以下字段时,键盘会隐藏该字段.像这样,我该怎么做才能看到下面的字段?

  10. ios – 在viewDidLayoutSubviews中更改帧

    我是否需要添加某种标志来检查动画是否已经运行?

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部