ajax跨域例子

例子

https://github.com/ruanyf/react-demos/blob/master/demo12/index.htmljavascript

此網頁代碼運行在本地, 是能夠訪問 github 數據的。 是因爲 github 網站開啓的 ajax 跨域訪問能力。html

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="UTF-8" />
 5     <script src="../build/react.development.js"></script>
 6     <script src="../build/react-dom.development.js"></script>
 7     <script src="../build/babel.min.js"></script>
 8     <script src="../build/jquery.min.js"></script>
 9   </head>
10   <body>
11     <div id="example"></div>
12     <script type="text/babel">
13       class RepoList extends React.Component {
14         constructor(props) {
15           super(props)
16           this.state = {
17             loading: true,
18             error: null,
19             data: null
20           };
21         }
22 
23         componentDidMount() {
24           this.props.promise.then(
25             value => this.setState({loading: false, data: value}),
26             error => this.setState({loading: false, error: error}));
27         }
28 
29         render() {
30           if (this.state.loading) {
31             return <span>Loading...</span>;
32           }
33           else if (this.state.error !== null) {
34             return <span>Error: {this.state.error.message}</span>;
35           }
36           else {
37             var repos = this.state.data.items;
38             var repoList = repos.map(function (repo, index) {
39               return (
40                 <li key={index}><a href={repo.html_url}>{repo.name}</a> ({repo.stargazers_count} stars) <br/> {repo.description}</li>
41               );
42             });
43             return (
44               <main>
45                 <h1>Most Popular JavaScript Projects in Github</h1>
46                 <ol>{repoList}</ol>
47               </main>
48             );
49           }
50         }
51       }
52 
53       ReactDOM.render(
54         <RepoList promise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')} />,
55         document.getElementById('example')
56       );
57     </script>
58   </body>
59 </html>

 

顯示內容:java

 

 

 ajax跨域訪問限制放開

https://www.zhihu.com/question/26376773react

跨域資源共享

CORS是一個W3C標準,全稱是」跨域資源共享」(Cross-origin resource sharing)。 對於這個方式,阮一峯老師總結的文章特別好,但願深刻了解的能夠看一下jquery

這裏我就簡單的說一說大致流程。git

  1. 對於客戶端,咱們仍是正常使用xhr對象發送ajax請求。
    惟一須要注意的是,咱們須要設置咱們的xhr屬性withCredentials爲true,否則的話,cookie是帶不過去的哦,設置: xhr.withCredentials = true;
  2. 對於服務器端,須要在 response header中設置以下兩個字段:
    Access-Control-Allow-Origin:
    Access-Control-Allow-Credentials:true
    這樣,咱們就能夠跨域請求接口了。

 

抓包分析

對於發起的ajax請求,存在響應頭  Access-Control-Allow-Origin:*github

相關文章
相關標籤/搜索