繁体   English   中英

XMLHTTPRequest无法加载http:// ...原始http:// localhost:Access-Control-Allow-Origin不允许使用端口

[英]XMLHTTPRequest cannot load http://… Origin http://localhost:port is not allowed by Access-Control-Allow-Origin

我正在使用一些第三方web api,当我在我的应用程序中通过ajax调用调用web api时,总是会出错而不是成功。 在检查控制台时我得到“XMLHTTPRequest无法加载http:// ...原始http // localhost:port /不允许Access-Control-Allow-Origin”错误

            $.ajax({
               url: "SomeURL",
               type:"GET",
               dataType: 'jsonp',
               crossDomain: true,
               success: function (data) {
                   alert("Success");
               },
               error: function (data, Errtext) {
                  alert("some error occured");
               }
           });

当我直接在浏览器中访问该URL时,我以XML格式接收数据

我也提到类似的问题如何在jsonp中解决未捕获的语法错误但没有得到解决方案

提前致谢

您可以在浏览器中看到响应,因为只有跨域ajax请求受同一原始策略的约束。

要克服相同源策略的限制,您应该使用jsonp或跨源资源共享(CORS)。

JSONP: 什么是JSONP?

请注意,要使用jsonp,您调用的第三方Web API应支持jsonp。

CORS:跨源资源共享标准的工作原理是添加新的HTTP标头,允许服务器描述允许使用Web浏览器读取该信息的起源集。 此外,对于可能对用户数据产生副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对某些MIME类型的POST使用),规范要求浏览器“预检”请求,请求支持的方法从具有HTTPOPTIONS请求方法的服务器,然后,在服务器“批准”时,使用实际的HTTP请求方法发送实际请求。 服务器还可以通知客户端是否应随请求一起发送“凭据”(包括Cookie和HTTP身份验证数据)。

https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS

要在asp.net应用程序中启用CORS:

<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
   <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
 </httpProtocol>
</system.webServer>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM