หากคุณใช้การป้องกัน Rails CSRF เริ่มต้น ( <%= csrf_meta_tags %>
) คุณสามารถกำหนดค่าโมดูล Angular ของคุณได้ดังนี้:
myAngularApp.config ["$httpProvider", ($httpProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
]
หรือถ้าคุณไม่ได้ใช้ CoffeeScript (อะไรนะ!?):
myAngularApp.config([
"$httpProvider", function($httpProvider) {
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
}
]);
หากต้องการคุณสามารถส่งส่วนหัวเฉพาะในคำขอที่ไม่ใช่ GET โดยมีสิ่งต่อไปนี้:
myAngularApp.config ["$httpProvider", ($httpProvider) ->
csrfToken = $('meta[name=csrf-token]').attr('content')
$httpProvider.defaults.headers.post['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.put['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.patch['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.delete['X-CSRF-Token'] = csrfToken
]
นอกจากนี้อย่าลืมตรวจสอบคำตอบของ HungYuHeiซึ่งครอบคลุมฐานทั้งหมดบนเซิร์ฟเวอร์มากกว่าไคลเอนต์