如何使用Access-Control-Allow-Origin?它只是介于html头标签之间吗?

dav*_*vis 25 html access-control cross-domain same-origin-policy cors

我一直在阅读,Access-Control-Allow-Origin因为它似乎有效地允许跨域请求,因为我可以访问外部站点.我的问题是如何使用Access-Control-Allow-Origin来允许跨域请求.我试过这个(不要笑)(顺便说一句,我想要的是一个数字,1或0被退回)

<html>
<head>
Access-Control-Allow-Origin: *
</head>
<body>
1
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我接近了吗?谢谢你的帮助.如果有更简单的方法来做一个简单的跨域请求,请告诉我.

mbo*_*kil 16

有3种方法允许跨域起源(不包括jsonp):

1)使用像PHP这样的模板语言直接在页面中设置标题.请记住,标题之前不能有HTML,否则会失败.

 <?php header("Access-Control-Allow-Origin: http://example.com"); ?>
Run Code Online (Sandbox Code Playgroud)

2)修改服务器配置文件(apache.conf)并添加此行.请注意,"*"表示允许所有.某些系统可能还需要凭据集.通常允许所有访问都存在安全风险,应该避免:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true
Run Code Online (Sandbox Code Playgroud)

3)要允许Apache Web服务器上的多个域,请将以下内容添加到配置文件中

<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(example.org|example.com)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    Header set Access-Control-Allow-Credentials true
</IfModule>
Run Code Online (Sandbox Code Playgroud)

4)对于开发使用,只使用Chrome Allow-Control-Allow-Origin扩展来破解浏览器并允许无限制的CORS

  • 无意中创建在测试中工作但在生产中神秘失败的代码的最简单方法是添加扩展.;) (17认同)

Bry*_*eld 11

这是一个HTTP标头.您可以配置您的网络服务器或webapp以理想地发送此标头.也许在htaccess或PHP中.

或者你可以使用

<head>...<meta http-equiv="Access-Control-Allow-Origin" content="*">...</head>
Run Code Online (Sandbox Code Playgroud)

我不知道这是否有效.并非所有HTTP标头都可以直接在HTML中配置.

这可以作为许多HTTP头的替代,但请参阅下面的@EricLaw的评论.这个特殊的标题是不同的.

警告

这个答案严格来说就是如何设置标题.我对允许跨域请求一无所知.

关于HTTP标头

每个请求和响应都有标题.浏览器将其发送到Web服务器

GET /index.htm HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

然后是标题

Host: www.example.com
User-Agent: (Browser/OS name and version information)
.. Additional headers indicating supported compression types and content types and other info
Run Code Online (Sandbox Code Playgroud)

然后服务器发送响应

Content-type: text/html
Content-length: (number of bytes in file (optional))
Date: (server clock)
Server: (Webserver name and version information)
Run Code Online (Sandbox Code Playgroud)

例如Cache-Control,可以配置其他标头,这完全取决于您的语言(PHP,CGI,Java,htaccess)和Web服务器(Apache等).

  • 怎么能用html和javascript完成它.我有一个html页面通过javaascript调用另一个html页面.我没有使用任何可以修改标头的服务器端脚本. (12认同)
  • 它*必须*在HTTP标头中.在体内支持它将是一个安全漏洞. (7认同)