我有一个ASP.Net MVC 4 Website
和另一个ASP.Net Web API
项目。目前两者都托管在不同的域上。我正在使用amplify.js
在我的前端使用API。因为这两个网站都托管在当我从API
调用UI
时,我总是一个跨域请求(我正在利用CORS
来实现此目的。)。这会导致每个域OPTIONS
的额外请求HTTP API
打电话给我,这增加了开销。我也尝试在子域上托管这两个网站,但仍然有OPTIONS
请求,我想摆脱这些额外的请求。
有什么方法可以消除OPTIONS
请求?
答案 0 :(得分:3)
有什么办法可以消除OPTIONS请求吗?
您可以使用JSONP
代替CORS。不幸的是,这可能不适合您的场景,因为JSONP仅适用于GET请求(jQuery的$.ajax
方法具有此限制)。
或者如果您在同一个域上托管2并且您没有违反same origin policy
,则可以使用正常的AJAX请求。
答案 1 :(得分:1)
要防止跨域请求,源域和目标域必须完全相同:在主机,域和端口(same origin policy)中。但是,您可以选择阻止CORS:
我会选择一种或三种方式,因为脚本解决方案只是感觉太笨拙;)我还建议检查是否真的有必要在不同的域上运行API和网站。 OPTIONS标头通常不会产生太多开销,因此您可能会考虑首先优化代码的其他部分。
也许您可以将网站和API放在一个域中,而只将API放在另一台服务器上的数据库中?只是一个想法...