No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'nu
Posted 我是谁???
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'nu相关的知识,希望对你有一定的参考价值。
一、什么是跨域访问
举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的。跨域访问违反了同源策略,同源策略的详细信息可以点击如下链接:Same-origin_policy;
总而言之,同源策略规定,浏览器的ajax只能访问跟它的html页面同源(相同域名或IP)的资源。
二、解决方案
常用的解决方案有两种,可以分为客户端解决方案和服务器端解决方案。先说服务器端解决方案:
-
服务器端解决方案
在服务器端的filter或者servlet里面添加response.setHeader("Access-Control-Allow-Origin", "*");
“Access-Control-Allow-Origin”表示允许跨域访问,“*”表示允许所有来源进行跨域访问,这里也可以替换为特定的域名或ip。
很显然,这种方式对非网站拥有人员来说是不能做到的。而且此种方式很容易受到CSRF攻击。 -
客户端解决方案
$(function($){
var url = ‘http://*****/index‘;
$.ajax(url, {
data: {
‘cityname‘: ‘成都‘,
‘date‘: ‘2016.12.12‘
},
dataType: ‘jsonp‘,
crossDomain: true,
success: function(data) {
if(data && data.resultcode == ‘200‘){
console.log(data.result.today);
}
}
});
将ajax请求中的dataType属性设置为“jsonp”,jsonp是专门用来解决跨域访问而诞生的。
以上是关于No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'nu的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins打包报错:(No such file or directory) and 'parent.relativePath' points at no local POM
VS Code报错Module 'xx' has no 'xx' member pylint(no-member)解决办法
VSCODE 报错 Module ‘xx‘ has no ‘xx‘ member pylint(no-member)
VSCODE 报错 Module ‘xx‘ has no ‘xx‘ member pylint(no-member)