访问静态资源时出现CORS错误

时间:2019-02-04 22:08:04

标签: spring spring-boot cors

尽管具有以下配置,但访问http://localhost:8080/rooms/rooms.json给我一个CORS错误-所请求的资源上没有'Access-Control-Allow-Origin'标头

我没有问题可以请求控制器映射的任何其他路径。静态资源有什么问题?如何在没有Spring安全性的情况下允许cors请求或排除资源路径?

Spring Boot 2.0.5

Spring Boot Web Starter 2.0.5

var property = environment.getProperty("spring.datasource.url");

4 个答案:

答案 0 :(得分:0)

@CrossOrigin(value = "*")添加到您的控制器类。您可以将*替换为任何特定的URL,以防仅允许该来源。

答案 1 :(得分:0)

    @CrossOrigin(origins = "http://localhost")
    @GetMapping("/rooms/")
    public Object rooms() {
       // your implementation
    }

您可以通过这种方式完成。

答案 2 :(得分:0)

像下面这样更新<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/home_fragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".home_fragment"> <android.support.v7.widget.CardView android:id="@+id/first_card" android:layout_width="200dp" android:layout_height="100dp" android:layout_marginTop="200dp" app:cardBackgroundColor="@color/colorAccent" app:cardCornerRadius="15dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="Button 1 " app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> </android.support.constraint.ConstraintLayout> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:id="@+id/second_card" android:layout_width="200dp" android:layout_height="100dp" android:layout_marginTop="56dp" app:cardBackgroundColor="@color/colorAccent" app:cardCornerRadius="20dp" app:layout_constraintStart_toStartOf="@id/first_card" app:layout_constraintTop_toBottomOf="@id/first_card"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2 " app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> </android.support.constraint.ConstraintLayout> </android.support.v7.widget.CardView> </android.support.constraint.ConstraintLayout> 可能会起作用

addCorsMappings

答案 3 :(得分:0)

https://www.viator.com/orion/nova/public/mmblite/styles-53929dcb.css

实际上遇到了相同的问题,但是找到了根本原因并解决了。 您的请求很可能是由中介进行缓存的:负载平衡器,CDN或将HTTP服务器作为常规的非CORS请求缓存在应用程序的前面。然后,您使用Origin:发送了请求,但是中介返回了相同的缓存响应,因为默认情况下,从缓存响应的角度来看,它们是由/path + METHOD + {{1 }}-header相同。为了告诉缓存,具有Host:的请求和常规请求(无Origin:的请求都需要作为独立条目缓存在任何缓存中,我们在两个响应中都需要Origin:标头。此问题已固定/实现在Spring 5.2.x中(在我的情况下是Spring 5.1.9),在您的情况下是5.0.9(依赖于Spring Boot 2.0.5。)一旦升级到Spring 5.2.0,所有的内容都将在缓存中得到修复。我建议升级到5.2.6以上(因为在CORS处理中还有进一步的更改,很高兴能做到)。

这是他们(关键)提交给Spring的那行(有所不同):https://github.com/spring-projects/spring-framework/commit/d27b5d0ab6e8b91a77e272ad57ae83c7d81d810b#r36264428

及其错误描述:https://github.com/spring-projects/spring-framework/issues/22273