来自 chrome 扩展的 Spring Boot 上的交叉原点

Posted

技术标签:

【中文标题】来自 chrome 扩展的 Spring Boot 上的交叉原点【英文标题】:cross origin on spring boot from chrome extension 【发布时间】:2020-02-28 19:40:52 【问题描述】:

在我的spring应用程序中,我有一个方法:

@CrossOrigin(origins="*")
@PostMapping("/datum")
Datum test(@RequestBody String data) 
    return repository.save(new Datum(data));

我希望所有应用程序都可以访问它,所以我把它放了 @CrossOrigin(origins="/**")。但是当我尝试这样做时,它运行起来没有任何抱怨。

这就是我从 chrome 扩展发送数据的方式:

var request = new XMLHttpRequest();
let url='http://localhost:8080/datum';
let data=JSON.stringify( "data": body);
request.open('POST', url, true);
request.setRequestHeader("Content-Type", "application/json");
request.send(data);

我的扩展清单:

"permissions": [
    "activeTab",
    "tabs",
    "<all_urls>",
    "background",
    "http://*/*",
    "https://*/*",
    "http://localhost:8080/datum"
],

给我错误403

但是客户端还是无法访问,请问如何解决?

【问题讨论】:

【参考方案1】:

在我的 @SpringBootApplication 注释类中,我添加了这个:

@Bean
    public WebMvcConfigurer corsConfigurer() 
        return new WebMvcConfigurer() 
            @Override
            public void addCorsMappings(CorsRegistry registry) 
                registry.addMapping("/**").allowedOrigins("*");
            
        ;
    

manifest.json:

"permissions": [
    "activeTab",
    "tabs",
    "background",
    "http://*/"
  ]

现在可以了。

【讨论】:

以上是关于来自 chrome 扩展的 Spring Boot 上的交叉原点的主要内容,如果未能解决你的问题,请参考以下文章

来自C#的Chrome扩展程序状态

来自 Chrome 扩展的 X11 / DBUS 消息传递?

为啥子 POM 中没有来自 spring-boot-dependencies 的属性?

010-Spring Boot 扩展分析

少数用户的 Chrome CORS 阻塞和少数用户的工作正常:Spring boot + Angular App

在 iFrame 中激活 Zurb Foundation 的 Joyride,来自 Chrome 扩展内容脚本