在我的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);
我的扩展 list :
"permissions": [
"activeTab",
"tabs",
"<all_urls>",
"background",
"http://*/*",
"https://*/*",
"http://localhost:8080/datum"
],
给我错误 403
但是客户端还是访问不了,请问如何解决?
最佳答案
在我的 @SpringBootApplication
注释类中,我添加了这个:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
在 manifest.json
中:
"permissions": [
"activeTab",
"tabs",
"background",
"http://*/"
]
现在可以了。
关于javascript - 来自 chrome extension 的 spring boot 上的交叉原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677342/