Javascript 这是跨域请求还是跨协议请求?
我有一个错误需要调试。 它是从一个http GET in Angular2中发生的,看起来像这样:Javascript 这是跨域请求还是跨协议请求?,javascript,angular,rest,cors,same-origin-policy,Javascript,Angular,Rest,Cors,Same Origin Policy,我有一个错误需要调试。 它是从一个http GET in Angular2中发生的,看起来像这样: constructor(private http: Http) {} ... this.http.get('someApi.abc.com/stuff?params`) 失败时出现如下错误: XMLHttpRequest无法将“”加载到 “”已被CORS策略阻止:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入 我认为
constructor(private http: Http) {}
...
this.http.get('someApi.abc.com/stuff?params`)
失败时出现如下错误:
XMLHttpRequest无法将“”加载到
“”已被CORS策略阻止:否
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许使用源“”
进入
我认为有两个问题:我不理解的重定向(可能需要联系someApi所有者?)和CORS问题
我的理解是,域名是:abc.com
协议是:http
因此,不应该涉及CORS的胡说八道。我显然错了,但不明白为什么:(同源策略基于需要精确匹配的域。
local.abc.com
与someApi.abc.com
不完全匹配。因此http://local.abc.com
和http://someApi.abc.com
是两个完全不同的源代码。因此,如果在源代码处运行前端JavaScript代码<代码>http://local.abc.com并向http://someApi.abc.com
,则这是一个跨源请求,因此涉及CORS;具体而言,如果http://someApi.abc.com
站点不发送访问s-Control-Allow-Origin
响应标题。您必须在应用程序后端可用。我知道。我没有意识到需要匹配的someApi
。那么它必须是跨源的,并且它在API上返回响应中的访问控制允许Origin
标题。我需要对标题执行任何操作吗就CORS协议而言,您不必对前端代码中客户端的头执行任何操作。从客户端发送特殊CORS头的唯一情况是访问控制请求头和访问控制请求方法请求头,但这些头是通过浏览器发送的自动发送,仅适用于浏览器自行执行的CORS飞行前选项请求。源站请求标头也是CORS协议的一部分,&始终针对来自前端JS的跨源站请求发送,但这也是浏览器自动添加的请求标头