在查看其他问题和答案之后,我发现他们并没有真正涵盖我想要做的事情,因此我为什么要问一个新问题。
所以,我建立了一个匹配机架中间件的子域名,我认为我会将api托管在它自己的子域(api.localhost:3000)中。
这在大多数情况下都有效但是如果我尝试发送ajax请求,那么Web浏览器会抛出一个关于CORS的问题。
那么如何为我的子域匹配中间件添加子域的CORS,同时考虑到我在机架中工作。
答案 0 :(得分:1)
如果你可以阻止使用CORS或jsonp,我建议你这样做。最好的解决方案是定义一个子目录来处理您的API / restful请求。我有类似的情况,当你强迫自己进入CORS又名Header Always Set Access-Control-Allow-Origin *然后你为自己设置了限制。
尽可能避免这些限制。只是我的经验。祝你好运!
我会做类似的事情:
http://www.domain.com/rest/api/items/1
休息是处理Web服务的地方。如果您不需要子域名,请远离子域名。
如果您必须绝对使用CORS并且您知道请求是由您处理的,那么只有您可以使用 jsonp 。
<强> JSONP 强>
jsonp实际上使用回调函数将您的请求包装在javascript对象中。使用此方法可以处理的数据量有一些限制,但它是一种快速的方法,可以在不设置CORS的情况下使您的跨域请求正常工作。
以下是jsonp请求的示例:
$.ajax({
type: "GET",
url: "http://www.domain.com/rest/WEB055S?callback=?",
data: args,
contentType: "application/json; charset=utf-8",
dataType: "jsonp"}).
done(function(data){
alert(data.ERROR);
})...