来自 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 上的交叉原点的主要内容,如果未能解决你的问题,请参考以下文章
来自 Chrome 扩展的 X11 / DBUS 消息传递?
为啥子 POM 中没有来自 spring-boot-dependencies 的属性?