相关疑难解决方法(0)

在IIS7上启用跨源资源共享

我最近遇到了将Javascript请求发布到另一个域的问题.默认情况下,不允许将XHR发布到其他域.

按照http://enable-cors.org/的说明,我在其他域上启用了此功能.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
    </customHeaders>
  </httpProtocol>
 </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在一切正常,但是在发回工作200响应之前仍然会返回405响应.

Request URL:http://testapi.nottherealsite.com/api/Reporting/RunReport
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Access-Control-Request-Headers:origin, content-type, accept
Access-Control-Request-Method:POST
Connection:keep-alive
Host:testapi.nottherealsite.com
Origin:http://test.nottherealsite.com
Referer:http://test.nottherealsite.com/Reporting
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Response Headersview source
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:*
Allow:POST
Cache-Control:private
Content-Length:1565
Content-Type:text/html; charset=utf-8
Date:Tue, 18 Sep 2012 14:26:06 GMT …
Run Code Online (Sandbox Code Playgroud)

javascript iis-7 xmlhttprequest cors

84
推荐指数
6
解决办法
18万
查看次数

Firefox设置启用跨域Ajax请求

我需要暂时允许跨域XMLHttpRequest.改变firefox安全设置似乎是要走的路.但我已经试过这个这个,但他们没有工作.有没有人能够配置这个?谢谢.

javascript http xmlhttprequest

47
推荐指数
4
解决办法
12万
查看次数

由于CORS,Azure网站上的HTTP OPTIONS请求失败

我最近将我们的服务器从Rackspace CloudSites(在Apache/Linux上运行)转移到了Windows Azure网站.自迁移以来,我们的REST API上的所有jQuery AJAX请求都因CORS而失败.

我们使用自定义标头,因此jQuery在运行实际API调用之前会发出Pre-flight HTTP OPTIONS请求.问题是OPTIONS请求似乎没有到达我的PHP代码,而是由其他一些我似乎无法控制的实体(显然是Web服务器)返回.

我已经使用以下标题几年了所以我很确定问题不在PHP代码中:

<?php
    $this->output->set_header("Access-Control-Allow-Origin: *");
    $this->output->set_header("Access-Control-Allow-Methods: GET,POST,DELETE,HEAD,PUT,OPTIONS");
    $this->output->set_header("Access-Control-Allow-Headers: X-Olaround-Debug-Mode, Authorization, Accept");
    $this->output->set_header("Access-Control-Expose-Headers: X-Olaround-Debug-Mode, X-Olaround-Request-Start-Timestamp, X-Olaround-Request-End-Timestamp, X-Olaround-Request-Time, X-Olaround-Request-Method, X-Olaround-Request-Result, X-Olaround-Request-Endpoint" );
?>
Run Code Online (Sandbox Code Playgroud)

我猜这个问题是特定于Azure网站的,因为代码似乎在我的开发机器(Windows 8/IIS 8.0)上运行良好.我是Azure的新手(以及一般的基于Windows的托管)所以我几乎不知道如何处理和调试此问题,因为Azure网站允许非常小的控制.

php jquery azure cors azure-web-sites

6
推荐指数
3
解决办法
2万
查看次数

XMLHttpRequest成功没有明确权限?也许CORS?

我开发了使用YouTube Data API v2的Google Chrome扩展程序.清单中的我的权限字段如下所示,因为脚本是在youtube.com下的页面中注入的,我还需要访问选项卡:

"permissions": ["tabs", "*://*.youtube.com/*"]
Run Code Online (Sandbox Code Playgroud)

这也适用于我向YouTube Data API v2发出请求,因为该请求是针对http://gdata.youtube.com/进行的,因此它是同一个域.但现在我正在迁移到YouTube Data API v3,请求必须完成http://www.googleapis.com/youtube/v3/(请注意HTTPS而不是HTTP).但令人惊讶的是,我的请求在没有添加任何新权限的情况下完美运行.

我知道,我问的是一些似乎不是问题的东西,但我个人认为我在软件中不理解的任何行为都是一个问题.为什么会这样?我不应该添加权限"*://*.googleapis.com/*",以便我的API的XMLHttpRequest请求工作?

我也有一些猜测:HTTP Access Control标头.我的请求会发送Origin带有值的标头chrome-extension://myExtensionId.API的答案还包含以下标题:

Access-Control-Allow-Origin: chrome-extension://myExtensionId

但这可能是Chrome允许我在没有清单中定义的额外权限的情况下进行跨源XMLHttpRequest的原因吗?不确定,显然在Google API,YouTube Data API v3或Chrome Extensions开发人员文档中没有记录.

xmlhttprequest google-api youtube-api cross-domain google-chrome-extension

2
推荐指数
1
解决办法
1521
查看次数