zoukankan      html  css  js  c++  java
  • No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

    一、什么是跨域访问

    举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的。跨域访问违反了同源策略,同源策略的详细信息可以点击如下链接:Same-origin_policy; 
    总而言之,同源策略规定,浏览器的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是专门用来解决跨域访问而诞生的。

  • 相关阅读:
    java中接口与抽象类的区别
    单例模式的懒汉式和饿汉式实现分析
    filter的原理(转)
    事务与连接池
    request对象和response对象的作用和相关方法
    java环境变量配置
    关于http
    java笔记5
    理解String的intern()方法
    用递归的方法算出给定字符串的最大连续重复字符的重复次数
  • 原文地址:https://www.cnblogs.com/peteremperor/p/9277307.html
Copyright © 2011-2022 走看看