跨域资源共享(Cross-Origin Resource Sharing)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨域资源共享(Cross-Origin Resource Sharing)相关的知识,希望对你有一定的参考价值。

跨域资源共享
疑问一:为什么要有跨域资源共享?

因为CSP同源策略的存在,导致AJAX无法跨域读取、写入资源,为了解决跨域分享资源的问题,提出了CORS,用来在不同域之间进行资源共享。但是,CORS仅仅适用于跨域发送数据,而且是从客户端发送到服务器端。

目标域:被跨域访问的那个域。
发送域:存储AJAX,需要访问目标域的那个域。

CORS的实现,需要目标域的服务器端设置响应的HTTP头

Allow-Control-Allow-Origin:https://xxxx.com     #表示运行https://xxxx.com域中的AJAX脚本发送资源过来

默认情况下,AJAX跨域不能发送目标域的cookie,除非目标域设置请求头:Access-control-Allow-Credentials: true
当目标域设置了上述的请求头之后,跨域发送数据时将会带上目标域的cookie,可实现登陆之后的操作。很完美的应用于AJAX实现的CSRF中。但是,如果设置了上述请求头,则Allow-Control-Allow-Origin的值必须为一个确定的值。

所以,如果目标域允许跨域,且Allow-Control-Allow-Origin的值为*,就可以直接放弃了。

以上是关于跨域资源共享(Cross-Origin Resource Sharing)的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)

asp.net core 系列之允许跨域访问-1(Enable Cross-Origin Requests:CORS)

如何搞定前端资源服务跨域问题之nginx篇

跨域 xmlhttprequest.response

asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS)

如何修复 JS 控制台中的“Cross-Origin Read Blocking (CORB) blocked cross-origin response”?