通过javascript从具有http的同一网站的页面调用同一网站的https url时,获取"Access-Control-Allow-Origin“错误。
站点根url在.cshtml文件中设置为使用绝对路径。当页面被缓存并再次打开时,站点url显示为http,而根url保持https,因为它已缓存,并导致此"Access-Control-Allow-Origin“错误。
我可以通过在操作方法上将"Access-Control-Allow-Origin“设置为"*”来修复此问题。
但这意味着它将允许所有的域,我想只允许我的应用程序或域。
我如何以编程方式设置它,这样它才能在所有环境中工作?
有没有其他更好的方法来设置使用绝对路径的站点根url?
发布于 2016-05-16 17:13:48
您正在寻找的是CORS (跨域资源共享、http://enable-cors.org/、https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
您不必在该标头上使用通配符,您可以只设置特定的域,甚至可以根据需要限制HTTP方法。
Access-Control-Allow-Origin: http://domain1.com
# if you want to, you can limit the methods too
Access-Control-Allow-Methods: GET, POST一般来说,只在需要的时候打开系统,并尽量保持配置的“严密性”。
发布于 2016-05-16 17:11:07
您可以缓存测试协议的条件,然后动态更改URL。
例如:
if (location.protocol == "https:") {
url = "https://....";
} else {
url = "http://....";
}
// your AJAX call goes here有关位置协议here的更多信息。
https://stackoverflow.com/questions/37249844
复制相似问题