无法跨域访问

无法跨域访问

在控制器上使用@CrossOrigin(origins = {"http://localhost:8888"})进行了跨域访问的设置,

html页面修改了 url : "http://localhost/restful/persons", 但是点击按钮后还是无放跨域访问

重启服务器,删除out和target文件都试过了。

 
http://img1.sycdn.imooc.com//climg/5ddbc5e609c2260b17660210.jpg

http://img1.sycdn.imooc.com//climg/5ddbc5c809aef66e08700112.jpg

http://img1.sycdn.imooc.com//climg/5ddbc5d50912817c13570490.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

6回答

同学你好!

你的地址中应该写上端口号:

http://localhost:8888/restful/persons 

老师的没有写,是因为老师使用的是80端口,浏览器默认使用的是80,所以老师的不写也可以。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

提问者 懒人13 2019-11-26 15:24:29
好帮手慕柯南 2019-11-26 13:38:22

同学你好!

接口就是指我们在Controller中写的内容。

是有两个项目的,请问同学你是在哪一个项目上添加的跨域的注解呢?

http://img1.sycdn.imooc.com//climg/5ddcba2709374b7014540838.jpg

同学是不是写错位置了呢?

祝学习愉快~

  • 提问者 懒人13 #1
    老师你看我这样对不?可就访问不到
    2019-11-26 15:22:22
提问者 懒人13 2019-11-26 11:39:26

下面的代码都是,是为跨域访问修改后的。

RestfulController.java

package com.imooc.restful.controller;

import com.imooc.restful.entity.Person;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController  //此注解是在@Controller注解基础上的扩展,它表示当前控制器类是按照RESTful风格进行编写的,因此可以省略方法上的@ResponseBody注解
@RequestMapping("/restful")
@CrossOrigin(origins = {"http://localhost:8888"}, maxAge = 3600) //origins的值为允许跨域访问的url地址,maxAge为预检访问的缓存时间(ms)
public class RestfulController {
    @GetMapping("/request")
//    @ResponseBody
    public String doGetRequest() {
        return "{\"message\":\"返回查询结果\"}";
    }

    //   /restful/request/100
    @PostMapping("/request/{rid}")
//    @ResponseBody
    public String doPostRequest(@PathVariable("rid") Integer requestId, Person person){
        System.out.println(person);
        return "{\"message\":\"数据新建成功\",\"id\": " + requestId+ "}";
    }

    @PutMapping("/request")
//    @ResponseBody
    // 由于Put请求是非简单请求,因此应在web.xml开启并配置FormContentFilter过滤器
    public String doPutRequest(Person person) {
        System.out.println(person);
        return "{\"message\":\"数据更新成功\"}";
    }

    @DeleteMapping("/request")
//    @ResponseBody
    public String doDeleteRequest(){
        return "{\"message\":\"数据删除成功\"}";
    }

    @GetMapping("/person")
    public Person findByPersonId(Integer id){
        Person person = new Person();
        if(id == 1){
            person.setName("张三");
            person.setAge(12);
        } else if (id == 2) {
            person.setName("李四");
            person.setAge(34);
        }
        return person;
    }

    @GetMapping("/persons")
    public List<Person> findPersons(){
        List<Person> list = new ArrayList<Person>();
        Person p1 = new Person();
        p1.setName("张三");
        p1.setAge(12);
        p1.setBirthday(new Date());
        Person p2 = new Person();
        p2.setName("李四");
        p2.setAge(34);
        p2.setBirthday(new Date());

        list.add(p1);
        list.add(p2);
        return list;
    }
}

client.html中跨域访问的function代码

$(function () {
    $("#btnPersons").click(function () {
        $.ajax({
            // url : "/restful/persons",
            url : "http://localhost/restful/persons",  //跨域访问
            type : "get",
            dataType : "json",
            success : function (json) {
                console.info(json)
                for (var i = 0; i < json.length; i++) {
                    var p = json[i];
                    $("#divPersons").append("<h2>" + p.name + "-" + p.age + "-" + p.birthday + "</h2>")
                }
            }
        })
    })
})


好帮手慕柯南 2019-11-26 10:36:15

同学你好!

请问同学你是否是在被访问的接口上添加的@CrossOrigin,也就是不需要添加端口号访问的那个接口,建议同学检查一下。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 懒人13 #1
    接口?老师是说修改了端口号的那个项目的RestfulController.java类么?
    2019-11-26 11:35:35
提问者 懒人13 2019-11-25 20:20:57

我的Tomcat端口号是8888

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师