springBoot 跨域問題如何解決

首先我門要知道什麼是跨域:

跨域是指 不同域名之間相互訪問。跨域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。

也就是如果在A網站中,我們希望使用Ajax來獲得B網站中的特定內容 
如果A網站與B網站不在同一個域中,那麼就出現了跨域訪問問題。

什麼是同一個域?

同一協議,同一ip,同一端口,三同中有一不同就產生了跨域。

前端解決跨域:

前邊也說了,跨域是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。 
解決: 
所以搞一個node 服務器做代理,發出請求到node 服務器,node服務器轉發到後端就可以繞過跨域問題。

後端解決跨域問題:

後端解決就比較簡單了。例如我用的springboot,只用在Controller類上添加一個“@CrossOrigin“註解就可以實現對當前controller 的跨域 訪問了,當然這個標籤也可以加到方法上。

@RequestMapping(value = "/users")
@RestController
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(method = RequestMethod.POST)
    @CrossOrigin
    public User create(@RequestBody @Validated User user) {
        return userService.create(user);
    }
   }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

相關知識:

CSRF是什麼?

  CSRF(Cross-site request forgery),中文名稱:跨站請求僞造,也被稱爲:one click attack/session riding,縮寫爲:CSRF/XSRF。

參考 :https://www.zhihu.com/question/26379635

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章