调程序时遇到“已拦截跨源请求:同源策略禁止读取位于……的远程资源”,这是因为通过ajax调用其他域的接口会有跨域问题。

解决方法如下:

方法一:服务器端(PHP)设置header头,实现跨域访问

示例:

// PHP
<?php
    header('Access-Control-Allow-Origin:*');  

    $name = $_POST['username'];
    $address = $_POST['address'];
    # code...
    echo json_encode(array(
        'status' => 1,
        'msg'    => 'success'
    ));

// JS
$.ajax({
    type: "POST",
    url: "http://127.0.0.1/jsonp.php",
    dataType: "json",
    data: {
        'username':username,
        'address':address
    }
    success: function(res) {
        # code...
});
    

方法二:JSONP跨域访问

JSONP全称JSON with Padding,是用于解决AJAX跨域问题的一种方案。在jquery中就有封装,通过ajax请求多带上一个jsonp的参数即可。

示例:

// PHP
<?php
    $name = $_GET['username'];
    $address = $_GET['address'];
    $callback = $_GET['callback'];  // 最好加上判空和默认值,以防拿不到参数

    $result = json_encode(array(    // 模拟返回值
        'status' => 1,
        'msg'    => 'success'
    ));
    echo $callback . "(" . $result . ")";

// JS
$.ajax({
    type: "GET",
    url: "http://127.0.0.1/jsonp.php",
    dataType: "jsonp",
    jsonp: "callback",
    data: {
        'username':username,
        'address':address
    }
    success: function(res) {
        # code...
});
// 也可以写成
$.ajax({
    type: "GET",
    url: "http://127.0.0.1/jsonp.php?username="+username+"&address="+address,
    dataType: "jsonp",
    jsonp: "callback",
    success: function(res) {
        # code...
    });
});

Ajax实现跨域访问的两种方法的更多相关文章

  1. ajax实现跨域访问的两种方式

    一.使用jsonp实现跨域请求 在前端开发这中你会发现,所有带src属性的标签都可以跨域访问其他服务器文件.jsonp实现的原理也是如此. 以jsonp的数据类型进行请求时,JQ会动态在页面中添加sc ...

  2. Ajax实现跨域访问的三种方法

    转载自:http://www.jb51.net/article/68424.htm 一.什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / scri ...

  3. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...

  4. ASP.NET MVC 实现AJAX跨域请求的两种方法

    通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据的加载,例如Google. 在ASP.NET MVC 框 ...

  5. WebAPI的跨域访问CORS三种方法

    跨域访问: JSONP的原理利用<script>没有跨域访问的限制,利用<script>的src跨域访问api,api会根据数据把json包装在一个js里面,这样跨域的客户端拿 ...

  6. PHP允许AJAX跨域请求的两种方法

    * 一. 服务端设置 header 头允许AJAX跨域 ** 代码如下: // 允许 ityangs.net 发起的跨域请求 header("Access-Control-Allow-Ori ...

  7. spring boot:解决cors跨域问题的两种方法(spring boot 2.3.2)

    一,什么是CORS? 1,CORS(跨域资源共享)(CORS,Cross-origin resource sharing), 它是一个 W3C 标准中浏览器技术的规范, 它允许浏览器向非同一个域的服务 ...

  8. ajax实现跨域访问

    ajax跨域访问是一个老生畅谈的问题啦,网上解决方法很多,discuz用的p3p协议,有兴趣的朋友可以了解下,比较常用的是JSONP方法,貌似目前这种方法只支持GET方式,不如POST方式安全. 即使 ...

  9. 解决ajax跨域问题的一种方法

    解决ajax跨域问题的一种方法 前后端分离经常用json来传输数据,比较常见的问题就有ajax跨域请求的错误问题,这里是我的一种解决方法: 在java中加入如下的注解类: import org.spr ...

随机推荐

  1. [转载]grep查看上下文及简单正则表达式

    转载自:https://www.cnblogs.com/mfryf/p/3336288.html inux grep 显示前后几行的信息2016年03月02日 14:10:58 ChenHui246 ...

  2. 【译】第18节---数据注解-ForeignKey

    原文:http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-fi ...

  3. Scala语言学习

    Scala的程序被编译成Java字节码(生成class文件),所以可以运行在JVM上,并且可以调用Java的类库,兼容Java程序. Scala 是一门多范式(multi-paradigm)的编程语言 ...

  4. perl hash array 嵌套 push

    $hash{"A"}=["pp"];想变成:$hash{"A"}=["p","q"];因为 $has ...

  5. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  6. [osg]OSG相机添加动画路径

    查看osg坐标系,camare默认姿态:http://www.cnblogs.com/lyggqm/p/8073688.html 首先搞清楚osg的坐标系以及osg::camare的默认姿态 下代码面 ...

  7. ES6的新API如Promise,Proxy,Array.form(),Object.assign()等,Babel不能转码, 使用babel-polyfill来解决

    Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator.Set.Maps.Proxy.Reflect.Symbol.Promis ...

  8. Eclipse使用之将Git项目转为Maven项目, ( 注意: 最后没有pom.xml文件的, 要转化下 )

    Eclipse使用之将Git项目转为Maven项目(全图解) 2017年08月11日 09:24:31 阅读数:427 1.打开Eclipse,File->Import 2.Git->Pr ...

  9. 让DOM从页面中消失的方法

    1. 在隐藏的方法中,display取none值这种方法一般是不可取的!因为display:none是直接不显示,也就是不渲染此元素,如果它所作用的元素排版在页面较前,先渲染,就容易引起回流(refl ...

  10. 《剑指offer》第五十七题(和为s的两个数字)

    // 面试题57(一):和为s的两个数字 // 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们 // 的和正好是s.如果有多对数字的和等于s,输出任意一对即可. #includ ...