javascript - 来自 chrome extension 的 spring boot 上的交叉原点

标签 javascript spring spring-boot google-chrome-extension cors

在我的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/

相关文章:

javascript - 如何以编程方式访问 NodeJS 异常文本

javascript - 我的 angularjs 表单上的 $invalid 和 $valid 均未定义

javascript - 如何根据内容删除表格列?

java - 从 jndi 注入(inject)属性

java - testcontainers oracle 数据库容器在创建数据库用户之前启动

java - 如何忽略像 "car":{}, 这样的空 json 对象,这些对象在使用 jackson 反序列化后会导致空的 pojo

php - 使用 getJSON 连接到在线数据库

Java Spring : Error message "no declaration can be found for element ' util:constant'

java - 在 hql 中使用 select * 但获取值的地址

spring-boot - Eureka 和 Kubernetes